海康摄像头检测摄像头是否处于在线状态
这里我就只介绍自检的方法,搭建我就不介绍了
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;
}
到这里摄像头自检的方法就已经搞定了,希望能帮你,新的一天加油!