码迷,mamicode.com
首页 > 编程语言 > 详细

java实现海康NVR/DVR设备工作状态获取

时间:2016-05-20 00:39:41      阅读:706      评论:0      收藏:0      [点我收藏+]

标签:

该功能需要到JNA的知识。

通过查阅海康设备网络SDK编程指南(DVR&NVR)可以知道海康SDK的调用方法都要同过如下过程:

技术分享

虚线框的流程是可选部分,不会影响其他流程和模块的功能使用。具体的模块说明可以自行参考SDK开发文件。

主要功能代码:

测试例子,因此虚线部分功能不实现

1.初始化设备SDK:对整个网络SDK 系统的初始化,内存预分配等操作。

代码:HCNetSDK sdk = HCNetSDK.INSTANCE;

     sdk.NET_DVR_Init();//返回booleaan值

2.注册设备:实现用户的注册功能,注册成功后,返回的用户ID 作为其他功能操作的唯一标识

代码: NativeLong uid=new  NativeLong(-1);

    NET_DVR_DEVICEINFO_V30 devinfo=new NET_DVR_DEVICEINFO_V30();//设备信息

    uid=sdk.NET_DVR_Login_V30((string)IP,(short)PORT,(string)user,string()pwd,devinfo);//返回一个用户编号,同时将设备信息写入devinfo

3.设备工作状态获取(参数配置模块):

代码:NET_DVR_WORKSTATE_V30 devwork=new NET_DVR_WORKSTATE_V30();

   sdk.NET_DVR_GetDVRWorkState_V30(uid, devwork);//返回Boolean值,判断是否获取设备能力

   IntByReference ibrBytesReturned = new IntByReference(0);//获取IP接入配置参数

     NET_DVR_IPPARACFG ipcfg=new  NET_DVR_IPPARACFG();

   ipcfg.write();

     Pointer lpIpParaConfig =ipcfg.getPointer();

        sdk.NET_DVR_GetDVRConfig(uid,sdk.NET_DVR_GET_IPPARACFG,new NativeLong(0),lpIpParaConfig,ipcfg.size(),ibrBytesReturned);

    ipcfg.read();

4.注销设备:

  代码:sdk.NET_DVR_Logout(uid);

5.释放SDK

  代码:sdk.NET_DVR_Cleanup();

 

详细例子:

package ClientDemo;

import com.sun.jna.NativeLong;
import com.sun.jna.Pointer;
import com.sun.jna.ptr.IntByReference;

import ClientDemo.HCNetSDK.NET_DVR_DEVICEINFO_V30;
import ClientDemo.HCNetSDK.NET_DVR_IPPARACFG;
import ClientDemo.HCNetSDK.NET_DVR_WORKSTATE_V30;

public class Device_demo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		HCNetSDK sdk = HCNetSDK.INSTANCE;
		if(!sdk.NET_DVR_Init()){
			System.out.println("SDK初始化失败");
			return ;
		}
		NativeLong uid=new  NativeLong(-1);
		NET_DVR_DEVICEINFO_V30 devinfo=new NET_DVR_DEVICEINFO_V30();//设备信息
		String ip="192.168.10.191";
		short port=8000;
		uid=sdk.NET_DVR_Login_V30(ip,port,"admin","hk123456",devinfo);//返回一个用户编号,同时将设备信息写入devinfo
		int Iuid=uid.intValue();
		if(Iuid<0){
			System.out.println("设备注册失败");
			return ;
		}
		NET_DVR_WORKSTATE_V30 devwork=new NET_DVR_WORKSTATE_V30();
		if(!sdk.NET_DVR_GetDVRWorkState_V30(uid, devwork)){
			//返回Boolean值,判断是否获取设备能力
			System.out.println("返回设备状态失败");
		}
		IntByReference ibrBytesReturned = new IntByReference(0);//获取IP接入配置参数
		NET_DVR_IPPARACFG ipcfg=new NET_DVR_IPPARACFG();
		ipcfg.write();
		Pointer lpIpParaConfig =ipcfg.getPointer();
		sdk.NET_DVR_GetDVRConfig(uid,sdk.NET_DVR_GET_IPPARACFG,new NativeLong(0),lpIpParaConfig,ipcfg.size(),ibrBytesReturned);
		ipcfg.read();
		System.out.print("IP地址:"+ip);
		System.out.println("|设备状态:"+devwork.dwDeviceStatic);//0正常,1CPU占用率过高,2硬件错误,3未知
		//显示模拟通道
		for(int i=0;i< devinfo.byChanNum;i++){
			System.out.print("Camera"+i+1);//模拟通道号名称
			System.out.print("|是否录像:"+devwork.struChanStatic[i].byRecordStatic);//0不录像,不录像
			System.out.print("|信号状态:"+devwork.struChanStatic[i].bySignalStatic);//0正常,1信号丢失
			System.out.println("|硬件状态:"+devwork.struChanStatic[i].byHardwareStatic);//0正常,1异常			
		}
		sdk.NET_DVR_Logout(uid);
		sdk.NET_DVR_Cleanup();		
	}

}

 输出:

技术分享

java实现海康NVR/DVR设备工作状态获取

标签:

原文地址:http://www.cnblogs.com/qtblog/p/5383769.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!