海康设备集成springboot
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 海康设备集成springboot
- 前言
- 一、海康SDK包
-
- 根据下载的SKD包中的DEMO示例连接设备
-
- 创建一个springboot项目将库文件放入根目录lib文件下(lib自己创建)maven 加载一下
- 连接设备
- 海康设备下载网络设备搜索工具能找到设备后将参数写到AcsMain的main方法中
- 二、车牌识别
- 三、单元门禁DEMO中Alarm进行监听
前言
公司要做一个智慧社区项目,之前是通过海康平台的接口简单好用,只不过现在收费啦,所有要换成SDK的方式来获取数据,现在来总结一下经验
提示:以下是本篇文章正文内容,下面案例可供参考
一、海康SDK包
海康SDK包下载
根据下载的SKD包中的DEMO示例连接设备
创建一个springboot项目将库文件放入根目录lib文件下(lib自己创建)maven 加载一下
连接设备
1.HCNetSDK.dll这个文件根据自己的来
代码如下(示例):
/*** 根据不同操作系统选择不同的库文件和库路径* @return*/private static boolean createSDKInstance(){if(hCNetSDK == null){synchronized (HCNetSDK.class){String strDllPath = "";try{//System.setProperty("jna.debug_load", "true");modulesif(osSelect.isWindows())//win系统加载库路径strDllPath = System.getProperty("user.dir") + "\\modules\\trafficrecord\\lib\\HCNetSDK.dll";else if(osSelect.isLinux())//Linux系统加载库路径//获取到的path是file:/home/trafficrecord-1.0-SNAPSHOT.jar!/BOOT-INF/classes!/lib/linux/libhcnetsdk.so格式的//strDllPath = AcsMain.class.getClassLoader().getResource("/lib/linux/libhcnetsdk.so").getPath().substring(5);strDllPath = "/usr/lib64/libhcnetsdk.so";System.out.println("===============================================");System.out.println("strDllPath==="+strDllPath);hCNetSDK = (HCNetSDK) Native.loadLibrary(strDllPath, HCNetSDK.class);}catch (Exception ex) {System.out.println("loadLibrary: " + strDllPath + " Error: " + ex.getMessage());return false;}}}return true;}
海康设备下载网络设备搜索工具能找到设备后将参数写到AcsMain的main方法中
main方法连接设备我这里将ip,端口,账号,密码设为参数啦
public static void init(String ip,String userName,String password,String port) {if(hCNetSDK == null){if(!createSDKInstance()){log.info(ip+" 初始化SDK失败");return;}}//linux系统建议调用以下接口加载组件库if (osSelect.isLinux()){HCNetSDK.BYTE_ARRAY ptrByteArray1 = new HCNetSDK.BYTE_ARRAY(256);HCNetSDK.BYTE_ARRAY ptrByteArray2 = new HCNetSDK.BYTE_ARRAY(256);//这里是库的绝对路径,请根据实际情况修改,注意改路径必须有访问权限String strPath1 = "/usr/lib64/libcrypto.so.1.1";String strPath2 = "/usr/lib64/libssl.so.1.1";//String strPath1 = AcsMain.class.getClassLoader().getResource("/lib/linux/libcrypto.so.1.1").getPath().substring(5);//String strPath2 = AcsMain.class.getClassLoader().getResource("/lib/linux/libssl.so.1.1").getPath().substring(5);System.out.println("===============================================");System.out.println("strPath1==="+strPath1);System.out.println("strPath2==="+strPath2);System.arraycopy(strPath1.getBytes(), 0, ptrByteArray1.byValue, 0, strPath1.length());ptrByteArray1.write();hCNetSDK.NET_DVR_SetSDKInitCfg(3, ptrByteArray1.getPointer());System.arraycopy(strPath2.getBytes(), 0, ptrByteArray2.byValue, 0, strPath2.length());ptrByteArray2.write();hCNetSDK.NET_DVR_SetSDKInitCfg(4, ptrByteArray2.getPointer());String strPathCom = "/usr/lib64/";HCNetSDK.NET_DVR_LOCAL_SDK_PATH struComPath = new HCNetSDK.NET_DVR_LOCAL_SDK_PATH();System.arraycopy(strPathCom.getBytes(), 0, struComPath.sPath, 0, strPathCom.length());struComPath.write();hCNetSDK.NET_DVR_SetSDKInitCfg(2, struComPath.getPointer());}hCNetSDK.NET_DVR_Init();//开启SDK日志打印boolean i= hCNetSDK.NET_DVR_SetLogToFile(3, "./sdklog", false);login_V40(ip,userName,password,Short.parseShort(StringUtils.isEmpty(port) ? "8000" : port)); //登陆设备}
成功之后可以最设备上的人员进行增删改查,以及事件的查询,我是根据定时任务去拉取的
二、车牌识别
车牌识别案例
设备遍历多线程去监听车辆
三、单元门禁DEMO中Alarm进行监听
总结:多看官方文档