海康威视人脸门禁对接开发(一)调用设备篇 您所在的位置:网站首页 海康威视门禁一体机密码重置 海康威视人脸门禁对接开发(一)调用设备篇

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

2023-10-19 09:59| 来源: 网络整理| 查看: 265

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

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

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有