海康威视智能终端获取实时人脸体温识别记录二次开发java

需求

使用的是海康威视人脸带体温识别智能终端,根据主动获取设备事件现在不支持获取体温,所以实时获取

参考设备布防

设备登陆注册省略,见------海康威视人脸识别智能终端获取设备事件二次开发Java

设备布防

Thread.sleep(100000);是为了在控制台程序测试实时获取数据效果,整合到项目中时不需要

// 设置布防
public void setAlarm(){
    if (lAlarmHandle.intValue()<0){// 尚未布防,需要布防
        if (fMSFCallBack_V31 == null){
            fMSFCallBack_V31 = new FMSGCallBack_V31();
            Pointer pUser = null;
            if (!HCNetLogin.getHcNetSDK().NET_DVR_SetDVRMessageCallBack_V31(fMSFCallBack_V31, pUser))
            {
                System.out.println("Set callback function fail");
            }
            else{
                System.out.println("Set callback function successfully!");
            }
        }
        // 设置报警回调
        boolean  callflag = hCNetSDK.NET_DVR_SetDVRMessageCallBack_V31(fMSFCallBack_V31,null );
        if(callflag){
            System.out.println("callback----success+设置回调函数成功");
        }
        HCNetSDK.NET_DVR_SETUPALARM_PARAM_V50 struSetupAlarmParam = new HCNetSDK.NET_DVR_SETUPALARM_PARAM_V50();
        struSetupAlarmParam.read();
        struSetupAlarmParam.dwSize = struSetupAlarmParam.size();
        struSetupAlarmParam.byLevel = 1;
        struSetupAlarmParam.byAlarmInfoType = 1;
        struSetupAlarmParam.byDeployType = 1;
        struSetupAlarmParam.write();
        lAlarmHandle = HCNetLogin.getHcNetSDK().NET_DVR_SetupAlarmChan_V50(new NativeLong(HCNetLogin.getlUserID()),struSetupAlarmParam);
        if (lAlarmHandle.intValue() == -1){
            System.out.println("===========布防失败================");
        }else{
            System.out.println("===========布防成功================");
        }

        try {
            Thread.sleep(100000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

    }

}

回调函数:对着设备刷脸时,回调函数会打印数据

public class FMSGCallBack_V31 implements HCNetSDK.FMSGCallBack_V31 {
    @Override
    public void invoke(NativeLong lCommand, HCNetSDK.NET_DVR_ALARMER pAlarmer, Pointer pAlarmInfo, int dwBufLen, Pointer pUser) {
        AlarmDataHandle(lCommand.intValue(), pAlarmer, pAlarmInfo, dwBufLen, pUser);
    }

    public void AlarmDataHandle(int lCommand, HCNetSDK.NET_DVR_ALARMER pAlarmer, Pointer pAlarmInfo, int dwBufLen, Pointer pUser)
    {
        HCNetSDK.NET_DVR_ACS_ALARM_INFO strACSInfo;
        Pointer pACSInfo;
        if (lCommand == 20482){
            System.out.println("===============1111111111111==========");
            strACSInfo = new HCNetSDK.NET_DVR_ACS_ALARM_INFO();
            strACSInfo.write();
            pACSInfo = strACSInfo.getPointer();
            pACSInfo.write(0, pAlarmInfo.getByteArray(0, strACSInfo.size()), 0, strACSInfo.size());
            strACSInfo.read();
            System.out.println("=========22222222=============");
//            strACSInfo.byAcsEventInfoExtendV20=1;
            // 5代表主事件类型  次事件类型75对应的16进制0x4b代表刷脸通过
            if (strACSInfo.dwMajor == 5 && strACSInfo.dwMinor == 75){
                String deviceIP = (new String(pAlarmer.sDeviceIP)).trim();
                String punchTime = strACSInfo.struTime.toStringTime();
                String empCode = Integer.toString(strACSInfo.struAcsEventInfo.dwEmployeeNo);
                String cardNo = (new String(strACSInfo.struAcsEventInfo.byCardNo)).trim();
                System.out.println("======设备ip:===="+deviceIP);
                System.out.println("======编号:===="+empCode);
                System.out.println("======卡号:===="+cardNo);
                System.out.println("======时间:===="+punchTime);
                HCNetSDK.NET_DVR_ACS_EVENT_INFO_EXTEND_V20 v20 = new HCNetSDK.NET_DVR_ACS_EVENT_INFO_EXTEND_V20();
                v20.write();
                Pointer pp = v20.getPointer();
                pp.write(0,strACSInfo.pAcsEventInfoExtendV20.getByteArray(0,v20.size()),0,v20.size());
                v20.read();
//                System.out.println(v20);
                System.out.println("======体温:===="+v20.fCurrTemperature);
// 在项目中可以对接数据库,进行自己的业务逻辑操作
            }
        }
    }
}
  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 27
    评论
评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值