海康设备网络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

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
嵌入式硬盘录像机远程监控的设置与应用 要实现远程监控,首先确定所使用的设备支持那种远程监控方式。就目前来看,只有两种方式:一种是IE远程监控,一种是客户端远程监控;很多压缩卡和硬盘录像机同时支持IE和客户端远程监控。这里,我们仅以2100系列嵌入式硬盘录像机为例,介绍利用硬盘录像机实现远程监控的方法3 n4 K$ v( a$ n2 h " X3 i* j- l6 L5 p6 k% y 一、设备准备:" u9 O9 Q; q8 t5 n5 u   要想实现远程监控,我们首先需要把硬盘录像机连接到网络中。目前来看,大多数中小型企业、办公室、家庭均使用ADSL,而且最经济的方法就是使用ADSL。所以我们要想实现远程监控,硬盘录像机最基本的需要就是ADSL的宽带网络。在开通ADSL后,我们还需要一台支持DDNS功能的路由器(除非你的ADSL仅供硬盘录像机使用,没有其他需要上网的电脑和设备),据我们使用的情况看,TP-LINK系列的路由器就可以,价格和稳定性比较好,操作方法也比较简单,这里也就以TP-LINK410的路由器为例。这样,所需要做的前期工作就是:& L1 S' c6 \2 z# w! l8 z + I: ~2 P+ ?+ l$ _, _. q6 @ 1、ADSL开通并可以正常使用,记住ADSLde上网用户名和密码; 2、安装TP-LINK410路由器(四台电脑以上用户可以选择R810或其他支持DDNS的路由器),连接电脑和硬盘录像机,按照说明书进行路由器设置,将路由器的上网方式设置为“自动连接”,通过电脑检查是否可以正常上网,准备就绪后,进入硬盘录像机的远程监控设置:
设备网络SDK编程指南(DVR),是为了帮助开发人员在DVR设备上进行网络功能开发而编写的指南。 DVR作为一种视频监控设备,拥有许多功能,其中网络功能是重要的一部分。通过网络功能,DVR可以实现远程监控、远程回放、远程配置等操作,增加了设备的灵活性和便捷性。 在DVR设备上进行网络开发,需要使用设备网络SDK进行编程。SDK提供了一些API供开发人员调用,实现设备间的数据传输和远程控制等操作。开发人员可以利用SDK提供的接口,通过网络连接到DVR设备,获取设备的状态信息、控制设备的功能等。 在使用SDK进行编程时,需要掌握一些基本概念和操作。首先,需要了解设备网络协议,如IP地址、端口等。其次,需要熟悉SDK提供的接口,包括连接设备、发送数据、接收数据等。此外,还需要注意网络连接的稳定性和数据的安全性。 在编写程序时,可以根据实际需求选择合适的SDK接口进行调用。例如,如果需要实现远程监控功能,可以使用SDK提供的接口连接设备,接收实时视频流并显示在界面上。如果需要进行远程配置,可以使用SDK提供的接口发送配置命令到设备并获取设备的配置信息。 总之,设备网络SDK编程指南(DVR)提供了开发者在DVR设备上进行网络功能开发的参考资料。通过学习和掌握该指南,开发人员可以更加容易地进行DVR网络开发,实现各种功能,提升设备的性能和用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值