由于官方的例子中没有关于NET_DVR_GetDeviceConfig的示例,在此记录一下“NET_DVR_GET_FIELD_DETECTION 获取区域入侵侦测配置” ,避免其他小伙伴踩坑。

这里只记录主要代码,其中的一些常量自行添加:

1、HCNetSDK.java文件中增加接口NET_DVR_GetDeviceConfig

 boolean NET_DVR_GetDeviceConfig(NativeLong lUserID, int dwCommand, int dwCount, Pointer lpInBuffer,int dwInBufferSize, Pointer lpStatusList, Pointer lpOutBuffer, int dwOutBufferSize);boolean NET_DVR_SetDeviceConfig(NativeLong lUserID, int dwCommand, int dwCount, Pointer lpInBuffer,int dwInBufferSize, Pointer lpStatusList, Pointer lpOutBuffer, int dwOutBufferSize);

2、lpInBuffer对应结构体

 public static class NET_DVR_CHANNEL_GROUP extends Structure {public int dwSize;public int dwChannel;public int dwGroup;public byte byID;public byte[] byRes1 = new byte[3];public int dwPositionNo;public byte[] byRes2 = new byte[56];}

3、lpOutBuffer对应结构体,其中的二维数组不要直接使用[][]

 public static class NET_VCA_FIELDDETECION extends Structure {public int dwSize;public byte byEnable; //使能,是否开启public byte byEnableDualVca;// 启用支持智能后检索 0-不启用,1-启用public byte byEnableHumanMisinfoFilter;// 启用人体去误报 0-不启用,1-启用public byte byEnableVehicleMisinfoFilter;// 启用车辆去误报 0-不启用,1-启用public NET_VCA_INTRUSION[] struIntrusion = new NET_VCA_INTRUSION[MAX_INTRUSIONREGION_NUM];//每个区域的参数设置// 不要使用手册上是二维数组[][]// public NET_DVR_SCHEDTIME[][] struAlarmSched = new NET_DVR_SCHEDTIME[MAX_DAYS][MAX_TIMESEGMENT_V30];public NET_DVR_SCHEDTIMEWEEK[] struAlarmSched = new NET_DVR_SCHEDTIMEWEEK[MAX_DAYS]; //布防时间public NET_DVR_HANDLEEXCEPTION_V40 struHandleException; //异常处理方式public int dwMaxRelRecordChanNum; //报警触发的录象通道 数(只读)最大支持数量public int dwRelRecordChanNum; //报警触发的录象通道 数 实际支持的数量public int[] byRelRecordChan = new int[MAX_CHANNUM_V30];//触发录像通道public NET_DVR_SCHEDTIME[] struHolidayTime = new NET_DVR_SCHEDTIME[MAX_TIMESEGMENT_V30]; //假日布防时间public byte[] byRes2 = new byte[100];}public static class NET_VCA_INTRUSION extends Structure {public NET_VCA_POLYGON struRegion;public short wDuration;public byte bySensitivity;public byte byRate;public byte byDetectionTarget;public byte byPriority;public byte byAlarmConfidence;public byte byRecordConfidence;}public static class NET_VCA_POLYGON extends Structure {public int dwPointNum;public NET_VCA_POINT[] struPos = new NET_VCA_POINT[VCA_MAX_POLYGON_POINT_NUM];}public static class NET_VCA_POINT extends Structure {public float fX;public float fY;}

4、主要逻辑代码

 public static void getAndSetFieldDetection() throws UnsupportedEncodingException {// 获取参数NET_DVR_CHANNEL_GROUP channelGroup = new NET_DVR_CHANNEL_GROUP();channelGroup.dwSize = channelGroup.size();channelGroup.dwChannel = 1;channelGroup.write();Pointer lpInBuffer = channelGroup.getPointer();NET_VCA_FIELDDETECION userCfg = new NET_VCA_FIELDDETECION();Pointer lpOutBuffer = userCfg.getPointer();IntByReference lpBytesReturned = new IntByReference(0);boolean flag = hCNetSDK.NET_DVR_GetDeviceConfig(lUserID, HCNetSDK.NET_DVR_GET_FIELD_DETECTION, 1,lpInBuffer, channelGroup.size(), lpBytesReturned.getPointer(), lpOutBuffer, userCfg.size());userCfg.read();if (!flag) {System.out.println("获取区域入侵侦测配置失败,错误码为" + hCNetSDK.NET_DVR_GetLastError());return;}else {System.out.println("获取区域入侵侦测配置成功");}System.out.println(userCfg.toString());// 设置参数userCfg.byEnable = 0;userCfg.write();flag = hCNetSDK.NET_DVR_SetDeviceConfig(lUserID, HCNetSDK.NET_DVR_SET_FIELD_DETECTION, 1,lpInBuffer, channelGroup.size(), lpBytesReturned.getPointer(), lpOutBuffer, userCfg.size());if (!flag) {System.out.println("设置区域入侵侦测配置失败,错误码为" + hCNetSDK.NET_DVR_GetLastError());return;}else {System.out.println("设置区域入侵侦测配置成功");}}

5、《设备网络SDK开发使用手册》上面都是C++类型,java开发者写数据类型的时候需要格外小心。

C++和Java类型对应:

DWORD-----int

WORD-----short

char-----byte

BYTE-----byte

指针-----Pointer

海康设备网络SDK开发NET_DVR_GetDeviceConfig相关推荐

  1. 海康设备网络SDK java对接

    一.开发环境:Linux64(ubuntu环境) 二.SDK版本:CH-HCNetSDKV6.1.4.17_build20200331_Linux64(官网下载sdk) 三.开发环境准备:安装 jdk ...

  2. 海康设备对接sdk错误码汇总 v6.0

    海康设备对接sdk错误码汇总 v6.0

  3. 海康设备通过SDK获取和设置设备网络参数

    目录 1.获取网络相关参数 2.设置网络相关参数 1.获取网络相关参数 //获取设备的网络参数private void getNetCfg(int iUserID) {HCNetSDK.NET_DVR ...

  4. 海康播放器sdk开发中的PlayM4_SetDecCallBack函数的调用

    该函数如下: BOOL   PlayM4_SetDecCallBack(LONG nPort,void (CALLBACK* DecCBFun)(long nPort,char * pBuf,long ...

  5. 海康设备通过SDK获取设备硬件相关参数

    //获取设备的基本参数private void getDevCfg(int iUserID) {HCNetSDK.NET_DVR_DEVICECFG_V40 m_strDeviceCfg = new ...

  6. 基于最新版设备网络SDK集成海康摄像头之Java Demo调试运行教程

    Java Demo运行截图: 由于涉及到空间隐私,部分位置会打码. 设备网络SDK 设备网络SDK是基于硬件的SDK,是基于设备私有网络通信协议开发的,为后端设备(嵌入式网络硬盘录像机.视频服务器). ...

  7. 【海康摄像头二次开发】移植海康摄像头Android SDK并实现多屏显示

    文章目录 前言 一.看海康的例程 二.重要的函数分析 HCNetSDK PlayerSDK 三.移植 1.引入库 3.写一个设备信息管理的类 4.设备登录的类 5.视频显示的控件 6.通用的工具类 7 ...

  8. LiveNVR监控流媒体Onvif/RTSP功能支持海康摄像头通过海康SDK接入支持回看倍速播放海康设备存储的设备录像

    LiveNVR功能支持海康摄像头通过海康SDK接入支持回看倍速播放海康设备存储的设备录像 1.流媒体服务说明 2.支持海康SDK接入 3.查看设备录像 3.1.时间轴模式 3.2.列表模式 4.RTS ...

  9. 海康摄像头二次开发python_python实现海康sdk二次开发,移动侦测事件(一)

    1.概述 最近一段时间要从海康摄像头读取数据,作为程序的输入源,c++版本有海康有自己的demo,较为简单,很容易就实现了,但是为我们其他的程序都是基于python的,因此,需要使用Python调用海 ...

最新文章

  1. 剑指offer_第4题_重建二叉树
  2. 我的第一个SharePoint2013 App
  3. Express请求处理-GET和POST请求参数的获取
  4. java删除javaee_JavaEE--集合--删除List中指定元素
  5. 搭建php docker环境日记
  6. Redis Sentinel
  7. 关于使用stanfordcorenlp一直运行不报错的解决方法
  8. [胡思乱想]网络游戏与社会资源公平分配
  9. cannot spawn XXX\bin\TortoiseGitPlink.exe: No such file or directory
  10. RPM打包技术与典型SPEC文件分析(转)
  11. 004_More Control Flow Tools_流程控制语句
  12. 清除html中table标签显示的数据,jquery – 数据清除tbody
  13. *Unity程序报错“缺少根元素msbuild\current\bin\microsoft.common.currentversion.targets“
  14. 计算机社团收获作文,写智慧校园的优秀作文
  15. ps如何把自己的图与样机结合_如何用PS制作样机,并且看起来毫无痕迹
  16. 数据安全法下,企业如何平衡数据安全合规与业务性能?
  17. MPLS LDP简介-ielab
  18. 数字图像与机器视觉基础补充(2)--颜色转换+分割车牌
  19. php 删除其他盘符,Linux_自动清除电脑垃圾及删除windows默认共享盘符的批处理bat,by:zuifeng258Windows在默认情况下 - phpStudy...
  20. faiss索引基于数量级和内存限制的选择

热门文章

  1. pwscf与wannier90 Hands-On实战训练(一)——费米面计算为例
  2. Gerrit Trigger配置
  3. 【MULTISPECTRAL FUSION FOR OBJECT DETECTIONWITH CYCLIC FUSE-AND-REFINE BLOCKS】论文阅读
  4. 阿里P7测试员晒工资条,看完狠狠扎我心
  5. 桌面级与企业级硬盘的区别
  6. Python画图常用代码总结,这20个画图代码现拿现用
  7. 安装 Samba 网络共享服务, 可以通过网络访问我们指定的文件夹
  8. 【keras】一维卷积神经网络多分类
  9. Android保存图片到手机相册(res下的图片,网络图片都可以)
  10. java执行CMD命令,文件路径或文件名带空格处理