对接海康设备SDK,HCNetSDK的使用(以报警柱设备为例),获取报警消息等

您所在的位置:网站首页 海康sdk错误码29 对接海康设备SDK,HCNetSDK的使用(以报警柱设备为例),获取报警消息等

对接海康设备SDK,HCNetSDK的使用(以报警柱设备为例),获取报警消息等

2023-09-17 07:44| 来源: 网络整理| 查看: 265

对接海康设备SDK,HCNetSDK的使用(以报警柱设备为例)

海康sdk,分windows版和linux版

JAVA版 1. HCNetSDK引入库HCNetSDK.dll的问题

一般spring boot项目,可以将HCNetSDK中初始化引入库可改为

HCNetSDK INSTANCE = (HCNetSDK) Native.loadLibrary(HCNetSDKPath.DLL_PATH + "HCNetSDK.dll", HCNetSDK.class);

HCNetSDKPath类,获取当前项目地址

public class HCNetSDKPath { public static String DLL_PATH; static { String path = (HCNetSDKPath.class.getResource("/").getPath()+"lib/"). replaceAll("%20", " ").substring(1).replace("bin", "lib").replace("/","\\"); System.out.println(path); try { DLL_PATH = java.net.URLDecoder.decode(path, "utf-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } } 2. SDK的调用

一般调用该sdk,需要先注册,之后再进行其他操作,如设置回调函数,设置回调异常(可获取设备上下线),布防,监听登,可根据自己所需功能来调用.

public void reg(){ //第一步调用,可以用bean的方式注入 HCNetSDK hCNetSDK = HCNetSDK.INSTANCE; //初始化SDK boolean initSuc = hCNetSDK.NET_DVR_Init(); //设置连接超时时间与重连功能 hCNetSDK.NET_DVR_SetConnectTime(2000,1); hCNetSDK.NET_DVR_SetReconnect(10000,true); int lUserID;//用户ID NET_DVR_DEVICEINFO_V30 m_strDeviceInfo;//设备信息 NET_DVR_USER_LOGIN_INFO pLoginInfo;//登陆返回用户信息 String m_sDeviceIP = "127.0.0.1";//已登录设备的IP地址 int port = 8000;//设备端口号 String userName = "123";//用户名 String password = "123";//密码 m_strDeviceInfo = new NET_DVR_DEVICEINFO_V30 (); //注册设备 lUserID = hCNetSDK.NET_DVR_Login_V30(m_sDeviceIP,(short)port,userName,password, m_strDeviceInfo); //如果注册失败返回-1,获取错误码 if (lUserID System.out.println("SetDVRMessageCallBack failed, error code="+hCNetSDK.NET_DVR_GetLastError()); } //设置异常回调函数(可在回调函数中获取设备上下线状态等) HCNetSDK.FExceptionCallBack fExceptionCallBack = new FExceptionCallBack(); hCNetSDK.NET_DVR_SetExceptionCallBack_V30(0,0,fExceptionCallBack,null); //建立报警上传通道(布防) //布防参数 NET_DVR_SETUPALARM_PARAM net_dvr_setupalarm_param=new NET_DVR_SETUPALARM_PARAM(); int nativeLong = hCNetSDK.NET_DVR_SetupAlarmChan_V41(lUserID, net_dvr_setupalarm_param); //如果布防失败返回-1 if (nativeLong System.out.println("启动监听失败,错误号:" + hCNetSDK.NET_DVR_GetLastError()); } try { //等待设备上传报警信息 Thread.sleep(600001); } catch (InterruptedException e) { e.printStackTrace(); } //撤销布防上传通道 if(!hCNetSDK.NET_DVR_CloseAlarmChan_V30(nativeLong)){ //注销 hCNetSDK.NET_DVR_Logout(lUserID); //释放SDK资源 hCNetSDK.NET_DVR_Cleanup(); } //停止监听 lListenHandle是启动监听时返回值 hCNetSDK.NET_DVR_StopListen_V30(lListenHandle) //注销用户 hCNetSDK.NET_DVR_Logout(lUserID); //释放SDK资源 hCNetSDK.NET_DVR_Cleanup(); } 3. 回调函数 3.1 报警消息回调

实现HCNetSDK.FMSGCallBack是报警回调,实现该方法,在设备有报警时,报警消息会传过来

/** * 报警消息回调 */ public class FMSGCallBack implements HCNetSDK.FMSGCallBack { //lCommand 上传消息类型 pAlarmer 报警设备信息 pAlarmInfo 报警信息 dwBufLen 报警信息缓存大小 pUser 用户数据 //报警信息回调函数 public void invoke(int lCommand, NET_DVR_ALARMER pAlarmer, Pointer pAlarmInfo, int dwBufLen, Pointer pUser) { switch (lCommand){ /** * 这里根据SDK获取 */ case HCNetSDK.COMM_ALARMHOST_CID_ALARM: NET_DVR_CID_ALARM strPlateResult = new NET_DVR_CID_ALARM(); strPlateResult.write(); strPlateResult.read(); try { //处理自己的业务 //报警消息是字节流,需自己处理 System.out.println("报警信息:"+new String(pAlarmInfo.getByteArray(0, strPlateResult.size()), "gbk")); }catch (Exception e){ e.printStackTrace(); } break; } System.out.println("报警信息结束"); } } 3.2 异常消息回调

实现HCNetSDK.FExceptionCallBack方法

//接收异常消息的回调函数 public class FExceptionCallBack implements HCNetSDK.FExceptionCallBack { //接收异常消息的回调函数的外部实现 @Override public void invoke(int dwType, int lUserID, int lHandle, Pointer pUser) { switch(dwType) { case EXCEPTION_EXCHANGE: //用户交互时异常 System.out.println("用户交互时异常!!!"+lHandle); break; case EXCEPTION_PREVIEW: //网络预览时异常 System.out.println("网络预览时网络异常!!!"+lHandle); break; case 0x8015: //预览时重连成功 System.out.println("预览时重连成功!!!"+lHandle); break; case 0x8017: System.out.println("用户交互恢复!!!"+lHandle); break; default: System.out.println("异常"); break; } } } linux版

linux的库和Windows不同,库的导入可根据海康文档导入 HCNetSDK类也无需像Windows改变获取库的路径

HCNetSDK INSTANCE = (HCNetSDK) Native.loadLibrary("hcnetsdk", HCNetSDK.class);


【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3