上一篇的准备工作做好后,给设备通上网,需要在设备上面配置
1.注册设备,设备会返回:唯一用户ID,lUserID
/**
* 海康人脸识别机器型号:DS-K1T610M-KSC,DS-K1Y607M
*/
public static void main(String[] args) {
HCNetDeviceUtil hcNetDeviceUtil=new HCNetDeviceUtil();
//注册
String lUserID = ("127.0.0.1", "8000", "admin", "admin12345");//海康的门禁设备端口统一为:8000
(lUserID);
}
2.对设备进行布防,布防就是建立设备数据上传的通道,我们就能在报警回调函数实现类,里面接收到人脸比对的结果
/**
* 海康人脸识别机器型号:DS-K1T610M-KSC,DS-K1Y607M
* @throws Exception
*/
public static void main(String[] args) throws Exception {
HCNetDeviceUtil hcNetDeviceUtil=new HCNetDeviceUtil();
//注册设备
String lUserID=("1270.0.1", "8000", "admin", "admin12345");
//对设备布防
((lUserID));
//下发卡号,我用的是工号下发
byte[] cardInfo = (0, "123456", "李四");
//下发人脸
byte[] faceByte=new byte[2];//一定要将照片转成byte[],设备只接收这种数据
((lUserID), cardInfo, faceByte);
}
package ;
import ;
import .NET_DVR_ALARMER;
import .*;
//报警回调函数实现类:用于接收人脸识别比对结果
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();
();
Pointer pACSInfo=();
(0, (0, ()), 0, ());
();
if(==5 && ==75) {
String ip=new String().trim();
String punchTime=();
//工号如果以0开头的设备会将0给去掉,这是个坑
String empCode=();
//一定要加trim(),将多余的空格去掉,不然根据这个卡号去数据查数据的时候肯定会出现:期望xx,实际xxx
String cardNo=new String().trim();
(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=("1270.0.1", "8000", "admin", "admin12345");
//下发卡号,我用的是工号下发
byte[] cardInfo = (0, "123456", "李四");
//下发人脸
byte[] faceByte=new byte[2];//一定要将照片转成byte[],设备只接收这种数据
((lUserID), cardInfo, faceByte);
}
4.这个时候去设备前面刷个脸,就可以了,报警回调函数里面就会打印接收到的数据了
5.你要是想要调用,获取人脸卡号,删除人脸卡号,就自己调用就好了
最后附上demo:
链接:/s/1O3_m-ydCENFoMmcSZr2Ytg
提取码:jr0x