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

该功能需要到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();
	}

}

输出:

时间: 2024-10-10 01:25:09

java实现海康NVR/DVR设备工作状态获取的相关文章

Java实现 海康摄像头抓拍图像

先抱怨一下,打死都想不到,海康的摄像头SDK居然是一个Java类,还有必须的两个jar包(jna.jar,examples.jar).鬼能想得到会这么命名. 下面开始吧. 把从官网下载的SDK(和当前系统对应)解压,把库文件整个拷贝到某个目录(我是D:\hik\lib),然后把D:\hik\lib和D:\hik\lib\HCNetSDKCom加入到系统环境变量path中.可以尝试从代码中把这两个文件夹加入path,我没有试成功. 项目引入jna.jar和examples.jar这两个jar包.注

(转)从海康7816的ps流里获取数据h264数据

海康7816使用ps流来封装h.264数据,这里使用的解码器无法识别ps流,因此需要将h264数据从ps流里提取出来 对于ps流的规定可以参考13818-1文档 这里从7816里获取到一些数据取样 00 00 01 BA 44 73 26 B8 34 01 00 00 03 FE FF FF 00 00 00 0100 00 01 BC00 5A E0 FF 00 24 40 0E 48 4B 00 01 0D AF C5 D3 E0 07 FF FF FF FF 41 12 48 4B 00

Java学习----你可以知道对象的工作结果(获取方法的返回值)

1.写返回类型 2.return 返回值 3.定义变量接受返回值 public class App2 { public String [] print(String msg, int num) { for (int i = 0; i < num; i++) { System.out.println(msg); } return new String[]{"aaa","bbb"}; } public static void main(String[] args)

海康视频下载,以及实时视频预览

一,前言 公司一项目需要拿到海康刻录机里面某时间段的视频去刻录.遇到问题第一时间看官网有么有demo可以套用,哎,一言难尽,打开官网看到文档后,感觉长得不像,就没继续看了,不知道怎么弄的我,迷茫着在网上找答案,网上这方面的资料也少的厉害.最终还是硬着头皮把官网上的看着像的全下载了,终于找到了自己想要目标 二,下载 官网文档 https://www.hikvision.com/cn/download_61.html 请根据需要下载,这里我下载的是 设备网络SDK_Win64 : 三,整理成项目并运

[rtsp]海康IPC监控摄像头远程外网监控配置(DDNS)

本来这个DDNS服务正是我想要的,但是配置了之后海康提示不再提供这个服务了,以后统一使用萤石云了,看来有必要去学习下萤石开放平台的api,看都提供哪些服务. 海康威视网络摄像机出厂的默认IP地址:为192.0.0.64.需要将IPC的IP地址设置为和电脑在同一网段. 1.    使用摄像机IP地址搜索软件: 1.可以使用官方提供的专用SADP软件,下载链接如下:http://www.hikvision.com/Cn/download_more.asp?cid=140011#Menu=ChildM

海康设备获取YV12图像

概要: 准备: 海康SDK的下载地址:我下载的win64的.根据你自己的需求下载吧. http://www.hikvision.com/cn/download_more_570.html 这里笔者还推荐一个很有用的海康的客户端软件: http://www.hikvision.com/cn/download_more_390.html 4200/4000在DVS配置以及DVS密码丢失后可以起到很大帮助作用.(笔者对DVS的开发是接手以前一个同事的工作,密码丢失了,如果你的密码也忘记了的话,可以这样

海康DVR设备监控程序编制要点

海康DVR设备监控程序编制要点2015.05.02近日,我编写的"海康DVR设备监控程序"已经成功上线运行了,通过几天来的运行发现达到了预想的功能:1.每天扫描一次DVR设备,主要提取是①设备否在线.②在线时间.③硬盘数量.④硬盘容量.⑤硬盘状态:2.DVR设备扫描结果的运用:3.每周一次,扫描海康8300平台数据库,同步DVR等设备信息,如果有更换设备.新添加设备则予以更新: 在实现上述功能的过程中,在技术上学习了自己之前没有接触过的内容,可以说是新领域吧:1.海康DVR设备 SNM

海康网络摄像机调用SDK解码Java版

两个回调函数: FRealDataCallBack 实现预览回调数据 DecCallBack 解码回调函数 在HCNetSDK.java补充相关函数和结构声明 //播放库函数声明,PlayCtrl.dll interface PlayCtrl extends StdCallLibrary { PlayCtrl INSTANCE = (PlayCtrl) Native.loadLibrary("lib\\PlayCtrl", PlayCtrl.class); public static

海康SDK开发NVR拍照功能

实际项目中使用海康SDK进行NVR拍照功能的二次开发 基于Linux环境下采用Qt进行开发,使用海康SDK需先将海康打包的动态库拷贝至/us/lib/下,或者自己根据需要设置调用动态库的路径. 代码如下: #include "./include/HCNetSDK.h" int Demo_Capture(char* ip,char* userName,char*passwd) {     NET_DVR_Init();     NET_DVR_SetLogToFile(3, "