海康摄像头检测摄像头是否处于在线状态

海康摄像头检测摄像头是否处于在线状态

这里我就只介绍自检的方法,搭建我就不介绍了
在这里插入图片描述

HCNetSDK接口里写入

public static final int NET_DVR_DEV_ADDRESS_MAX_LEN = 129;
public static final int NET_DVR_LOGIN_USERNAME_MAX_LEN = 64;
public static final int NET_DVR_LOGIN_PASSWD_MAX_LEN = 64;

boolean NET_DVR_Init();
NativeLong NET_DVR_Login_V40(Pointer pLoginInfo, Pointer lpDeviceInfo);
boolean NET_DVR_Logout_V30(NativeLong lUserID);
boolean NET_DVR_RemoteControl(NativeLong lUserID, int dwCommand, Pointer lpInBuffer, int dwInBufferSize);
boolean NET_DVR_Cleanup();
int NET_DVR_GetLastError();

public static class NET_DVR_USER_LOGIN_INFO extends Structure {
		public byte[] sDeviceAddress = new byte[NET_DVR_DEV_ADDRESS_MAX_LEN];
		public byte byUseTransport;
		public short wPort;
		public byte[] sUserName = new byte[NET_DVR_LOGIN_USERNAME_MAX_LEN];
		public byte[] sPassword = new byte[NET_DVR_LOGIN_PASSWD_MAX_LEN];
		public FLoginResultCallBack cbLoginResult;
		Pointer pUser;
		public int bUseAsynLogin;
		public byte[] byRes2 = new byte[128];
}
public static class NET_DVR_DEVICEINFO_V40 extends Structure {
		public NET_DVR_DEVICEINFO_V30 struDeviceV30 = new NET_DVR_DEVICEINFO_V30();
		public byte bySupportLock;
		public byte byRetryLoginTime;
		public byte byPasswordLevel;
		public byte byRes1;
		public int dwSurplusLockTime;
		public byte[] byRes2 = new byte[256];
}

DemoCapture类里写入

static HCNetSDK hCNetSDK = HCNetSDK.INSTANCE;

	//摄像头登录
public NativeLong myLogin(String ip) {
	HCNetSDK.NET_DVR_USER_LOGIN_INFO struLoginInfo = new HCNetSDK.NET_DVR_USER_LOGIN_INFO();
	HCNetSDK.NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = new HCNetSDK.NET_DVR_DEVICEINFO_V40();
	struLoginInfo.bUseAsynLogin = 0;
	
	struLoginInfo.wPort = ;//填你自己的信息
	String address = ip;//填你自己的信息
	String userName = "";//填你自己的信息
	String passWord = "";//填你自己的信息
	for (int i = 0; i < address.length(); i++) {
		struLoginInfo.sDeviceAddress[i] = (byte) address.charAt(i);
	}
	for (int i = 0; i < userName.length(); i++) {
	  	struLoginInfo.sUserName[i] = (byte) userName.charAt(i);
	}
	for (int i = 0; i < passWord.length(); i++) {
	  	struLoginInfo.sPassword[i] = (byte) passWord.charAt(i);
	}
	struLoginInfo.write();
	
	userId = hCNetSDK.NET_DVR_Login_V40(struLoginInfo.getPointer(), struDeviceInfoV40.getPointer());
	System.out.println("********** ip :" + ip+ "*****************");
	System.out.println("********** NET_DVR_GetLastError :" + hCNetSDK.NET_DVR_GetLastError() + "*****************");
	System.out.println("********** this.m_strClientInfo.lChannel :"+ this.m_strClientInfo.lChannel + "*****************");
	System.out.println("the userId is :" + userId + "\n");
	return userId;

}
	/**
     * 检查设备是否在线
     * @param ip
     * @return
     */
public Boolean checkDeviceOnLine (String ip){
	//初始化
	NativeLong lRealHandle = initDataVideo();
	//登录
	NativeLong userID = myLogin(ip);//返回一个用户编号
	
	boolean isOnLine = hCNetSDK.NET_DVR_RemoteControl(userID,20005,null,0);
	logger.info("checkDeviceOnLine---isOnLine:"+isOnLine);
	boolean logoutV30 = hCNetSDK.NET_DVR_Logout_V30(userID);
	logger.info("checkDeviceOnLine---logoutV30:"+logoutV30);
	boolean cleanup = hCNetSDK.NET_DVR_Cleanup();
	logger.info("checkDeviceOnLine---cleanup:"+cleanup);
	
	return isOnLine;
}

到这里摄像头自检的方法就已经搞定了,希望能帮你,新的一天加油!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值