海康设备网络SDK开发NET_DVR_GetDeviceConfig
由于官方的例子中没有关于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相关推荐
- 海康设备网络SDK java对接
一.开发环境:Linux64(ubuntu环境) 二.SDK版本:CH-HCNetSDKV6.1.4.17_build20200331_Linux64(官网下载sdk) 三.开发环境准备:安装 jdk ...
- 海康设备对接sdk错误码汇总 v6.0
海康设备对接sdk错误码汇总 v6.0
- 海康设备通过SDK获取和设置设备网络参数
目录 1.获取网络相关参数 2.设置网络相关参数 1.获取网络相关参数 //获取设备的网络参数private void getNetCfg(int iUserID) {HCNetSDK.NET_DVR ...
- 海康播放器sdk开发中的PlayM4_SetDecCallBack函数的调用
该函数如下: BOOL PlayM4_SetDecCallBack(LONG nPort,void (CALLBACK* DecCBFun)(long nPort,char * pBuf,long ...
- 海康设备通过SDK获取设备硬件相关参数
//获取设备的基本参数private void getDevCfg(int iUserID) {HCNetSDK.NET_DVR_DEVICECFG_V40 m_strDeviceCfg = new ...
- 基于最新版设备网络SDK集成海康摄像头之Java Demo调试运行教程
Java Demo运行截图: 由于涉及到空间隐私,部分位置会打码. 设备网络SDK 设备网络SDK是基于硬件的SDK,是基于设备私有网络通信协议开发的,为后端设备(嵌入式网络硬盘录像机.视频服务器). ...
- 【海康摄像头二次开发】移植海康摄像头Android SDK并实现多屏显示
文章目录 前言 一.看海康的例程 二.重要的函数分析 HCNetSDK PlayerSDK 三.移植 1.引入库 3.写一个设备信息管理的类 4.设备登录的类 5.视频显示的控件 6.通用的工具类 7 ...
- LiveNVR监控流媒体Onvif/RTSP功能支持海康摄像头通过海康SDK接入支持回看倍速播放海康设备存储的设备录像
LiveNVR功能支持海康摄像头通过海康SDK接入支持回看倍速播放海康设备存储的设备录像 1.流媒体服务说明 2.支持海康SDK接入 3.查看设备录像 3.1.时间轴模式 3.2.列表模式 4.RTS ...
- 海康摄像头二次开发python_python实现海康sdk二次开发,移动侦测事件(一)
1.概述 最近一段时间要从海康摄像头读取数据,作为程序的输入源,c++版本有海康有自己的demo,较为简单,很容易就实现了,但是为我们其他的程序都是基于python的,因此,需要使用Python调用海 ...
最新文章
- 剑指offer_第4题_重建二叉树
- 我的第一个SharePoint2013 App
- Express请求处理-GET和POST请求参数的获取
- java删除javaee_JavaEE--集合--删除List中指定元素
- 搭建php docker环境日记
- Redis Sentinel
- 关于使用stanfordcorenlp一直运行不报错的解决方法
- [胡思乱想]网络游戏与社会资源公平分配
- cannot spawn XXX\bin\TortoiseGitPlink.exe: No such file or directory
- RPM打包技术与典型SPEC文件分析(转)
- 004_More Control Flow Tools_流程控制语句
- 清除html中table标签显示的数据,jquery – 数据清除tbody
- *Unity程序报错“缺少根元素msbuild\current\bin\microsoft.common.currentversion.targets“
- 计算机社团收获作文,写智慧校园的优秀作文
- ps如何把自己的图与样机结合_如何用PS制作样机,并且看起来毫无痕迹
- 数据安全法下,企业如何平衡数据安全合规与业务性能?
- MPLS LDP简介-ielab
- 数字图像与机器视觉基础补充(2)--颜色转换+分割车牌
- php 删除其他盘符,Linux_自动清除电脑垃圾及删除windows默认共享盘符的批处理bat,by:zuifeng258Windows在默认情况下 - phpStudy...
- faiss索引基于数量级和内存限制的选择
热门文章
- pwscf与wannier90 Hands-On实战训练(一)——费米面计算为例
- Gerrit Trigger配置
- 【MULTISPECTRAL FUSION FOR OBJECT DETECTIONWITH CYCLIC FUSE-AND-REFINE BLOCKS】论文阅读
- 阿里P7测试员晒工资条,看完狠狠扎我心
- 桌面级与企业级硬盘的区别
- Python画图常用代码总结,这20个画图代码现拿现用
- 安装 Samba 网络共享服务, 可以通过网络访问我们指定的文件夹
- 【keras】一维卷积神经网络多分类
- Android保存图片到手机相册(res下的图片,网络图片都可以)
- java执行CMD命令,文件路径或文件名带空格处理