1.访问海康官方杭州海康威视数字技术股份有限公司(https://www.hikvision.com/cn/)
2.下载SDK


3.SDK加入java程序调用

使用前先阅读SDK下的文档

加入项目工程 按照SDK里面的文档要求把下图文件夹和文件引入(在SDK库文件夹里)

HCNetSDK的绝对路径!!!!

核心代码

@Slf4j
@Service
public class HikService {static FMSGCallBack_V30 fmsgCallBack_v30;//消息回调static FExceptionCallBack fExceptionCallBack;//异常回调 String username = "admin";//设备用户名String password = "12345";//设备密码short m_sPort = 8000;//海康设备端口号int lUserID = -1;//用户private static int iCharEncodeType = 0;//设备字符集boolean b1 = hCNetSDK.NET_DVR_Init();//调用设备网络 SDK初始化 其他函数的前提private static HCNetSDK hCNetSDK = HCNetSDK.INSTANCE;//SDK实例private String ip;public void faceMonitor(String ip, String port, String username , String assword) {if(b1==false)hCNetSDK.NET_DVR_Init();//调用设备网络 SDK初始化 其他函数的前提//设置连接时间hCNetSDK.NET_DVR_SetConnectTime(2000, 1);//设置重连时间hCNetSDK.NET_DVR_SetReconnect(120000, true);
HCNetSDK.NET_DVR_LOCAL_CHECK_DEV struLoaclCheckDev = new HCNetSDK.NET_DVR_LOCAL_CHECK_DEV();struLoaclCheckDev.dwCheckOnlineTimeout = 0;struLoaclCheckDev.dwCheckOnlineNetFailMax = 0;
//        //DWORD   dwCheckOnlineTimeout;     //巡检时间间隔,单位ms  最小值为30s,最大值120s。为0时,表示用默认值(120s)
//        //DWORD   dwCheckOnlineNetFailMax;  //由于网络原因失败的最大累加次数;超过该值SDK才回调用户异常,为0时,表示使用默认值1hCNetSDK.NET_DVR_SetSDKLocalCfg(10, struLoaclCheckDev);//        hCNetSDK.NET_DVR_SetLogToFile(3, "C:\\SdkLog\\", true);//日志HCNetSDK.NET_DVR_USER_LOGIN_INFO m_strLoginInfo = new HCNetSDK.NET_DVR_USER_LOGIN_INFO();//设备登录信息String m_sDeviceIP = ip;//设备ip地址m_strLoginInfo.sDeviceAddress = new byte[HCNetSDK.NET_DVR_DEV_ADDRESS_MAX_LEN];System.arraycopy(m_sDeviceIP.getBytes(), 0, m_strLoginInfo.sDeviceAddress, 0, m_sDeviceIP.length());//        String m_sUsername = this.m_sUsername;//设备用户名m_strLoginInfo.sUserName = new byte[HCNetSDK.NET_DVR_LOGIN_USERNAME_MAX_LEN];System.arraycopy(m_sUsername.getBytes(), 0, m_strLoginInfo.sUserName, 0, m_sUsername.length());m_strLoginInfo.sPassword = new byte[HCNetSDK.NET_DVR_LOGIN_PASSWD_MAX_LEN];System.arraycopy(m_sPassword.getBytes(), 0, m_strLoginInfo.sPassword, 0, m_sPassword.length());m_strLoginInfo.wPort = this.m_sPort;m_strLoginInfo.bUseAsynLogin = false; //是否异步登录:0- 否,1- 是m_strLoginInfo.write();HCNetSDK.NET_DVR_DEVICEINFO_V40 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V40();//设备信息lUserID = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo);if (lUserID == -1) {log.info("登录失败,错误码为" + hCNetSDK.NET_DVR_GetLastError());} else {log.info("登录成功!");iCharEncodeType = m_strDeviceInfo.byCharEncodeType;byte[] sSerialNumber = m_strDeviceInfo.struDeviceV30.sSerialNumber;String sn = new String(sSerialNumber).trim();String strsn = sn.substring(sn.length() - 10);log.info("ip: " + ip + " ++deviId++ " +deviId +", ++strsn++ "+strsn );callBack();//回调setAlarm();//布防}}private void callBack(){//回调函数if (fmsgCallBack_v30 == null) {fmsgCallBack_v30 = new FMSGCallBack_V30();//报警回调if (!hCNetSDK.NET_DVR_SetDVRMessageCallBack_V30(fmsgCallBack_v30, null)) {//报警回调log.info("Set fmsgCallBack function fail");return;} else {log.info("Set fmsgCallBack function successfully!");}}if (fExceptionCallBack == null) {fExceptionCallBack = new FExceptionCallBack();//异常回调//设置异常回调函数(可在回调函数中获取设备上下线状态等)
//            Pointer pUser = m_strDeviceInfo.getPointer();if (!hCNetSDK.NET_DVR_SetExceptionCallBack_V30(0, 0, fExceptionCallBack, null)) {log.info("Set fExceptionCallBack function fail");return;} else {log.info("Set fExceptionCallBack function successfully!");}}}public void setAlarm() {//布防//建立报警上传通道(布防)HCNetSDK.NET_DVR_SETUPALARM_PARAM m_strAlarmInfo = new HCNetSDK.NET_DVR_SETUPALARM_PARAM();m_strAlarmInfo.dwSize = m_strAlarmInfo.size();m_strAlarmInfo.byLevel = 1;m_strAlarmInfo.byAlarmInfoType = 1;m_strAlarmInfo.byDeployType = 1;m_strAlarmInfo.write();int nativeLong = hCNetSDK.NET_DVR_SetupAlarmChan_V41(lUserID, m_strAlarmInfo);log.info("nativeLong=====" + nativeLong);
//            //如果布防失败返回-1if (nativeLong == -1) {log.info("deployment fail");//注销hCNetSDK.NET_DVR_Logout(lUserID);//释放SDK资源hCNetSDK.NET_DVR_Cleanup();} else {log.info("deployment Successful");}}

异常消息回调

/*** 异常消息回调*/
@Slf4j
public class FExceptionCallBack implements HCNetSDK.FExceptionCallBack {private static Map<Integer, String> ipUserIdMap = new HashMap<>();public static void addUserId(Map map) {ipUserIdMap.putAll(map);}@Overridepublic void invoke(int dwType, int lUserID, int lHandle, Pointer pUser) {switch (dwType) {case 0x8000: //用户交互时异常log.info("用户交互时异常(注册心跳超时,心跳间隔为2分钟)!!!"+"lUserID:"+lUserID );break;case 0x8001:  //语音对讲异常log.info("语音对讲异常!!!"+"lUserID:"+lUserID );break;case 0x8002: //报警异常log.info("报警异常!!!" +"lUserID:"+lUserID );break;case 0x8003://网络预览异常log.info("网络预览异常!!!"+"lUserID:"+lUserID );break;case 0x8004: //透明通道异常log.info("透明通道异常!!!"+"lUserID:"+lUserID );break;case 0x8005:  //预览时重连log.info("预览时重连!!!"+"lUserID:"+lUserID );break;case 0x8006: //报警时重连log.info("报警时重连!!!"+"lUserID:"+lUserID );break;case 0x8007://透明通道重连log.info("透明通道重连!!!"+"lUserID:"+lUserID );break;case 0x8008: //透明通道重连成功log.info("透明通道重连成功!!!"+"lUserID:"+lUserID );break;case 0x8010: //回放异常log.info("回放异常!!!" +"lUserID:"+lUserID );break;case 0x8011://硬盘格式化log.info("硬盘格式化!!!" + lHandle);break;case 0x8012: //被动解码异常log.info("被动解码异常!!!" +"lUserID:"+lUserID );break;case 0x8013:  //邮件测试异常log.info("邮件测试异常!!!" +"lUserID:"+lUserID );break;case 0x8014: //备份异常log.info("备份异常!!!" +"lUserID:"+lUserID );break;case 0x8015://预览时重连成功log.info("预览时重连成功!!!" +"lUserID:"+lUserID );break;case 0x8016: //报警时重连成功log.info("报警时重连成功!!!"+"lUserID:"+lUserID );break;case 0x8017:  //网络预览时网络异常log.info("用户交互恢复!!!"+"lUserID:"+lUserID );break;case 0x8018: //网络流量检测异常log.info("网络流量检测异常!!!"+"lUserID:"+lUserID );break;case 0x8019://图片预览重连log.info("图片预览重连!!!"+"lUserID:"+lUserID );break;case 0x8020: //图片预览重连成功log.info("图片预览重连成功!!!"+"lUserID:"+lUserID );break;case 0x8021://图片预览异常log.info("图片预览异常!!!"+"lUserID:"+lUserID );break;case 0x8022: //报警信息缓存已达上限log.info("报警信息缓存已达上限!!!" +"lUserID:"+lUserID );break;case 0x8023:  //报警丢失log.info("报警丢失!!!" +"lUserID:"+lUserID );break;case 0x8024: //被动转码重连log.info("被动转码重连!!!" +"lUserID:"+lUserID );break;case 0x8025://被动转码重连成功log.info("被动转码重连成功!!!" +"lUserID:"+lUserID );break;case 0x8026: //被动转码异常log.info("被动转码异常!!!" +"lUserID:"+lUserID );break;case 0x8040: //用户重登陆log.info("用户重登陆!!!" +"lUserID:"+lUserID );break;case 0x8041://用户重登陆成功log.info("用户重登陆成功!!!" +"lUserID:"+lUserID );break;case 0x8042: //被动解码重连log.info("被动解码重连!!!"+"lUserID:"+lUserID );break;case 0x8043:  //集群报警异常log.info("集群报警异常!!!" +"lUserID:"+lUserID );break;case 0x8044: //重登陆失败,停止重登陆log.info("重登陆失败,停止重登陆!!!"+"lUserID:"+lUserID );break;case 0x8045://关闭预览重连功能log.info("关闭预览重连功能!!!"+"lUserID:"+lUserID );break;case 0x8046: //关闭报警重连功能log.info("关闭报警重连功能!!!" +"lUserID:"+lUserID );break;case 0x8047:  //关闭透明通道重连功能log.info("关闭透明通道重连功能!!!" +"lUserID:"+lUserID );break;case 0x8048: //关闭回显重连功能log.info("关闭回显重连功能!!!" +"lUserID:"+lUserID );break;case 0x8049://关闭被动解码重连功能log.info("关闭被动解码重连功能!!!" +"lUserID:"+lUserID );break;default:log.info("异常"+"lUserID:"+lUserID );break;}}
}

欢迎留言,您的的建议是我前进的动力,车辆抓拍和人脸抓拍关键代码,请点击https://blog.csdn.net/qq_24981615/article/details/123060744https://blog.csdn.net/qq_24981615/article/details/123060744

海康 hikvision SDK 初始化、登录、布防、监听相关推荐

  1. 海康工业相机SDK + OpenCV实例(3):相机初始化Bug调试

    海康工业相机SDK + OpenCV实例(3): 相机初始化Bug调试 文章目录 海康工业相机SDK + OpenCV实例(3): 相机初始化Bug调试 前言 一.心跳时间设置 二.相机先关闭再打开 ...

  2. 【海康摄像头】海康摄像头SDK下载与使用

    文章目录 一.海康摄像头SDK官网下载 二.海康摄像头SDK在WinForm/WPF中使用 三.常用接口函数,封装调用函数 一.海康摄像头SDK官网下载 1.进入海康ws官网,下载官网SDK和相关文档 ...

  3. (一)Qt+OpenCV调用海康工业相机SDK示例开发

    系列文章目录 提示:这里是该系列文章的所有文章的目录 第一章: (一)Qt+OpenCV调用海康工业相机SDK示例开发 第二章: (二)Qt多线程实现海康工业相机图像实时采集 文章目录 系列文章目录 ...

  4. 工作日志:海康IPC SDK实时播放项目建立

    项目中用到海康的IPC,先建一个简单的项目实现实时播放: 海康的SDK到管网下载,本次试用的64位库. 1.建立VS C++项目,基于对话框,使用静态库还是共享动态库无所谓,原例程是使用动态共享库: ...

  5. 海康工业相机SDK + OpenCV实例(4):相机参数设置详解

    海康工业相机SDK + OpenCV实例(4): 相机参数设置详解 文章目录 海康工业相机SDK + OpenCV实例(4): 相机参数设置详解 前言 一.相机参数基本接口 二.自动曝光时间调整亮度 ...

  6. 关于使用海康相机SDK采集图片并传递给C++的使用总结

    一.背景 需要用C#调用海康相机SDK采集图片,并将采集的图片以Byte[]数组的形式传递给C++版视觉处理dll 二.步骤 1.声明变量 public MyCamera myCamera;//相机对 ...

  7. C/C++实战——基于Qt框架和visual studio的海康相机SDK二次开发

    最近在进行机器视觉系统的搭建,积累了经验,想和大家讨论.互相学习.相机是图像的来源.为了搭建视觉系统,完成图像分析.机器视觉任务,需要编程控制相机按工作所需的曝光.增益和帧率同步采集和存储图像.工业相 ...

  8. 海康工业相机SDK+OpenCV实例(1):海康SDK和OPENCV的安装与编译

    海康工业相机SDK+OpenCV实例(1) 海康SDK和OPENCV的安装与编译 文章目录 海康工业相机SDK+OpenCV实例(1) 海康SDK和OPENCV的安装与编译 前言 一.海康SDK安装 ...

  9. 海康摄像机sdk踩坑记述

    本文主要基于HKNetSDK6.1.6.4和HKNetSDK6.1.9.4.叙述一些sdk文档中叙述不清晰的地方以及容易被忽略的地方.后续会不断更新添加更多问题. 1.语音转发功能 如果想要获取语音, ...

  10. Java_JDK19.0.2_Ubuntu18.04中配合海康工业相机SDK环境搭建

    Java_JDK19.0.2_Ubuntu18.04中配合海康工业相机SDK环境搭建 简介 1. JDK环境搭建 JDK下载 JDK环境安装 2. 工业相机环境SDK安装 简介 本文主要介绍在ubun ...

最新文章

  1. 让 SVN (TortoiseSVN)提交时忽略bin和obj目录
  2. Microsoft Dynamic CRM 2013安装
  3. 在iphone程序中打开word、execl、pdf等文档
  4. Java里a和b哪个大_Java中 a+=b和a=a+b有什么区别?
  5. html页面可以用在webview,使用WebView加载HTML代码
  6. 陌陌 3 千万数据暗网出售;美团反腐 89 人受刑事查处;iPhone 推迟 5G 采用时间 | 极客头条...
  7. 张珺 2015/07/13 个人文档
  8. html if语句多条件,nginx if多条件判断的实现
  9. Android --自定义简单Toast
  10. 移动web:tab选项卡
  11. phpcms二次开发摘要
  12. HTTP协议简单概述
  13. JMF-Java媒体框架
  14. web platform installer php,Microsoft Web Platform Installer
  15. Linux下用imageMagick对图片进行一些操作,非常建议方便的一个图片处理工具。
  16. 方差分析ANOVA:理论、推导与R语言实现
  17. 傻白探索Chiplet,关于EPYC Zen2 的一些理解记录(五)
  18. 在线教育的内容研发和技术的迭代创新
  19. 轻量化CICD平台建设
  20. 关于linux下/srv、/var和/tmp的职责区分

热门文章

  1. Java中的动态代理
  2. 未来房价涨or跌?大数据告诉你
  3. word中的表格复制到html代码,怎样将Word中的表格复制到Excel中还保持原有内容和格式?...
  4. 高通msm8953平台射频调试
  5. c语言 2个字节字符串,【单选题】在C语言中,字符型数据所占的内存空间是 A. 2 个字节 B. 4 个字节 C. 1 个字节 D. 由用户自定义...
  6. Word TOC域的使用说明
  7. java:中文汉语数字和阿拉伯数字互相转换,人民币大小写转换
  8. excel求回归直线方程的公式_求回归直线方程的三种方法
  9. gopro7怎么回看视频_gopro7推荐帧数设置 gopro7视频格式设置
  10. Linux内核ncsi驱动源码分析(二)