海康威视人脸门禁对接开发(一)调用设备篇

上一篇的准备工作做好后,给设备通上网,需要在设备上面配置

1.注册设备,设备会返回:唯一用户ID,lUserID

/**
	 * 海康人脸识别机器型号:DS-K1T610M-KSC,DS-K1Y607M
	 */
	public static void main(String[] args) {

		HCNetDeviceUtil hcNetDeviceUtil=new HCNetDeviceUtil();
		//注册
		String lUserID = hcNetDeviceUtil.loginDevice("127.0.0.1", "8000", "admin", "admin12345");//海康的门禁设备端口统一为:8000
		System.out.println(lUserID);
	}

2.对设备进行布防,布防就是建立设备数据上传的通道,我们就能在报警回调函数实现类,里面接收到人脸比对的结果

/**
	 * 海康人脸识别机器型号:DS-K1T610M-KSC,DS-K1Y607M
	 * @throws Exception 
	 */
	public static void main(String[] args) throws Exception {

		HCNetDeviceUtil hcNetDeviceUtil=new HCNetDeviceUtil();
		//注册设备
		String lUserID=hcNetDeviceUtil.loginDevice("1270.0.1", "8000", "admin", "admin12345");
		//对设备布防
		hcNetDeviceUtil.SetupAlarmChan(Integer.parseInt(lUserID));
		//下发卡号,我用的是工号下发
		byte[] cardInfo = hcNetDeviceUtil.setCardInfo(0, "123456", "李四");
		//下发人脸
		byte[] faceByte=new byte[2];//一定要将照片转成byte[],设备只接收这种数据
		hcNetDeviceUtil.setFaceInfo(Integer.parseInt(lUserID), cardInfo, faceByte);
		
	}
package com.ykl;

import com.sun.jna.Pointer;
import com.utils.HCNetSDK.NET_DVR_ALARMER;
import com.utils.*;

//报警回调函数实现类:用于接收人脸识别比对结果
public class FMSGCallBack_V31 implements HCNetSDK.FMSGCallBack_V31 {
	
	@Override
	public boolean invoke(int lCommand, NET_DVR_ALARMER pAlarmer, Pointer pAlarmInfo, int dwBufLen, Pointer pUser) {
		if(lCommand==HCNetSDK.COMM_ALARM_ACS) {//门禁主机报警信息
			HCNetSDK.NET_DVR_ACS_ALARM_INFO strACSInfo=new HCNetSDK.NET_DVR_ACS_ALARM_INFO();
	    	strACSInfo.write();
	    	Pointer pACSInfo=strACSInfo.getPointer();
	    	pACSInfo.write(0, pAlarmInfo.getByteArray(0, strACSInfo.size()), 0, strACSInfo.size());
	    	strACSInfo.read();
	    	if(strACSInfo.dwMajor==5 && strACSInfo.dwMinor==75) {
	    		String ip=new String(pAlarmer.sDeviceIP).trim();
	    		String punchTime=strACSInfo.struTime.toStringTime();
	    		//工号如果以0开头的设备会将0给去掉,这是个坑
	    		String empCode=Integer.toString(strACSInfo.struAcsEventInfo.dwEmployeeNo);
	    		//一定要加trim(),将多余的空格去掉,不然根据这个卡号去数据查数据的时候肯定会出现:期望xx,实际xxx
	    		String cardNo=new String(strACSInfo.struAcsEventInfo.byCardNo).trim();
	    		System.out.println(ip+punchTime+empCode+cardNo);
	    		//接下来的数据库的操作,就自己写把
	    		
	    	}
		}	
		return true;
	}
}

 

3.下发卡号与人脸

/**
	 * 海康人脸识别机器型号:DS-K1T610M-KSC,DS-K1Y607M
	 * @throws Exception 
	 */
	public static void main(String[] args) throws Exception {

		HCNetDeviceUtil hcNetDeviceUtil=new HCNetDeviceUtil();
		//注册设备
		String lUserID=hcNetDeviceUtil.loginDevice("1270.0.1", "8000", "admin", "admin12345");
		//下发卡号,我用的是工号下发
		byte[] cardInfo = hcNetDeviceUtil.setCardInfo(0, "123456", "李四");
		//下发人脸
		byte[] faceByte=new byte[2];//一定要将照片转成byte[],设备只接收这种数据
		hcNetDeviceUtil.setFaceInfo(Integer.parseInt(lUserID), cardInfo, faceByte);
		
	}

4.这个时候去设备前面刷个脸,就可以了,报警回调函数里面就会打印接收到的数据了

5.你要是想要调用,获取人脸卡号,删除人脸卡号,就自己调用就好了

最后附上demo:

链接:https://pan.baidu.com/s/1O3_m-ydCENFoMmcSZr2Ytg 
提取码:jr0x

 

### 海康威视人脸识别门禁系统的对接开发 #### 准备工作 为了开始海康威视人脸识别门禁系统对接开发,需前往官方网站下载最新版的SDK[^2]。确保所选SDK版本与当前使用的JDK兼容非常重要。通常,在官方页面上能找到不同编程语言环境下的示例程序。 #### 注册设备并获取用户ID 旦准备好必要的软件工具链,则可以通过API接口来完成对特定硬件单元(如型号为`DS-K1T610M-KSC`, `DS-K1Y607M` 的人脸识别终端)的操作初始化过程。这涉及到通过调用相应的登录方法获得个唯的用户标识符(`lUserID`)用于后续交互操作[^3]: ```java HCNetDeviceUtil hcNetDeviceUtil = new HCNetDeviceUtil(); String lUserID = hcNetDeviceUtil.loginDevice("192.168.1.10", "8000", "admin", "password"); System.out.println("User ID: " + lUserID); ``` 上述代码片段展示了如何利用给定参数(IP地址、端口号、用户名及密码)向指定位置上的物理装置发起认证请求,并打印出返回的结果作为验证成功的标志。 #### 调用命令处理函数 对于更复杂的控制指令发送需求,比如触发报警事件或其他自定义行为时,可借助于通用的消息传递机制实现。下面是个简单的例子说明怎样构建这样的功能模块[^1]: ```java public boolean invoke(int commandCode, NET_DVR_ALARMER alarmData, Pointer extraInfo, int bufferSize, Pointer userData) { // 实现具体的业务逻辑... } ``` 此部分负责接收来自客户端应用程序发出的各种类型的请求并将它们转发至目标节点进行解析和响应。 #### 使用ISUP协议集成服务 当考虑采用更高层次的应用层通信标准来进行数据交换时,可以选择支持ISUP (Initial Setup and Usage Protocol) 协议的方式建立连接。这种方式下不仅能够简化网络拓扑结构设计还能提高整体性能表现。具体实施步骤如下所示[^4]: - 将所需的外部库文件加入到工程路径中; - 修改配置文件中的网络参数使之匹配实际部署场景; - 启动测试实例检验连通性和基本功能是否正常运作; 以上就是关于海康威视人脸门禁对接开发的基础介绍以及些实用技巧分享。希望这些信息能帮助开发者更好地理解和应用这套先进的安防解决方案。
评论 38
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值