|
|
|
@@ -13,9 +13,9 @@ public class HKVersion implements IHardwareEquipment { |
|
|
|
|
|
|
|
//海康SDK |
|
|
|
private static HCNetSDK hCNetSDK; |
|
|
|
private int[] lUserID = new int[]{0, 0, 0, 0, 0};//用户句柄 实现对设备登录 |
|
|
|
private int[] lAlarmHandle = new int[]{-1, -1, -1, -1, -1};//报警布防句柄 |
|
|
|
private int[] lAlarmHandle_V50 = new int[]{-1, -1, -1, -1, -1}; //v50报警布防句柄 |
|
|
|
private int lUserID = 0;//用户句柄 实现对设备登录 |
|
|
|
private int lAlarmHandle = -1;//报警布防句柄 |
|
|
|
private int lAlarmHandle_V50 = -1; //v50报警布防句柄 |
|
|
|
private int lListenHandle = -1;//报警监听句柄 |
|
|
|
private FMSGCallBack_V31 fMSFCallBack_V31 = null; |
|
|
|
private FMSGCallBack fMSFCallBack=null; |
|
|
|
@@ -59,13 +59,12 @@ public class HKVersion implements IHardwareEquipment { |
|
|
|
struNET_DVR_LOCAL_GENERAL_CFG.write(); |
|
|
|
Pointer pStrNET_DVR_LOCAL_GENERAL_CFG = struNET_DVR_LOCAL_GENERAL_CFG.getPointer(); |
|
|
|
hCNetSDK.NET_DVR_SetSDKLocalCfg(17, pStrNET_DVR_LOCAL_GENERAL_CFG); |
|
|
|
this.Login_V40(0, info.getIp(), info.getPort(), info.getUsername(), info.getPassword()); //登录设备 |
|
|
|
|
|
|
|
this.SetAlarm(0);//报警布防,和报警监听二选一即可 |
|
|
|
this.Login_V40(info.getIp(), info.getPort(), info.getUsername(), info.getPassword()); //登录设备 |
|
|
|
this.SetAlarm();//报警布防,和报警监听二选一即可 |
|
|
|
} |
|
|
|
|
|
|
|
private void SetAlarm(int i) { |
|
|
|
if (lAlarmHandle[i] < 0)//尚未布防,需要布防 |
|
|
|
private void SetAlarm() { |
|
|
|
if (lAlarmHandle < 0)//尚未布防,需要布防 |
|
|
|
{ |
|
|
|
//报警布防参数设置 |
|
|
|
HCNetSDK.NET_DVR_SETUPALARM_PARAM m_strAlarmInfo = new HCNetSDK.NET_DVR_SETUPALARM_PARAM(); |
|
|
|
@@ -74,9 +73,9 @@ public class HKVersion implements IHardwareEquipment { |
|
|
|
m_strAlarmInfo.byAlarmInfoType = 1; // 智能交通报警信息上传类型:0- 老报警信息(NET_DVR_PLATE_RESULT),1- 新报警信息(NET_ITS_PLATE_RESULT) |
|
|
|
m_strAlarmInfo.byDeployType = 0; //布防类型:0-客户端布防,1-实时布防 |
|
|
|
m_strAlarmInfo.write(); |
|
|
|
lAlarmHandle[i] = hCNetSDK.NET_DVR_SetupAlarmChan_V41(lUserID[i], m_strAlarmInfo); |
|
|
|
System.out.println("lAlarmHandle: " + lAlarmHandle[i]); |
|
|
|
if (lAlarmHandle[i] == -1) { |
|
|
|
lAlarmHandle = hCNetSDK.NET_DVR_SetupAlarmChan_V41(lUserID, m_strAlarmInfo); |
|
|
|
System.out.println("lAlarmHandle: " + lAlarmHandle); |
|
|
|
if (lAlarmHandle == -1) { |
|
|
|
System.out.println("布防失败,错误码为" + hCNetSDK.NET_DVR_GetLastError()); |
|
|
|
return; |
|
|
|
} else { |
|
|
|
@@ -92,13 +91,12 @@ public class HKVersion implements IHardwareEquipment { |
|
|
|
/** |
|
|
|
* 设备登录V40 与V30功能一致 |
|
|
|
* |
|
|
|
* @param i 登录设备编号 |
|
|
|
* @param ip 设备IP |
|
|
|
* @param port SDK端口,默认设备的8000端口 |
|
|
|
* @param user 设备用户名 |
|
|
|
* @param psw 设备密码 |
|
|
|
*/ |
|
|
|
private void Login_V40(int i, String ip, short port, String user, String psw) { |
|
|
|
private void Login_V40( String ip, short port, String user, String psw) { |
|
|
|
//注册 |
|
|
|
HCNetSDK.NET_DVR_USER_LOGIN_INFO m_strLoginInfo = new HCNetSDK.NET_DVR_USER_LOGIN_INFO();//设备登录信息 |
|
|
|
HCNetSDK.NET_DVR_DEVICEINFO_V40 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V40();//设备信息 |
|
|
|
@@ -120,8 +118,8 @@ public class HKVersion implements IHardwareEquipment { |
|
|
|
// m_strLoginInfo.byLoginMode=1; //ISAPI登录 |
|
|
|
m_strLoginInfo.write(); |
|
|
|
|
|
|
|
lUserID[i] = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo); |
|
|
|
if (lUserID[i] == -1) { |
|
|
|
lUserID = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo); |
|
|
|
if (lUserID == -1) { |
|
|
|
System.out.println("登录失败,错误码为" + hCNetSDK.NET_DVR_GetLastError()); |
|
|
|
} else { |
|
|
|
System.out.println(ip + ":设备登录成功!"); |
|
|
|
@@ -133,6 +131,60 @@ public class HKVersion implements IHardwareEquipment { |
|
|
|
hCNetSDK.NET_DVR_Cleanup(); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public String getDeployInfo() { |
|
|
|
String url = "GET /ISAPI/AccessControl/DeployInfo"; |
|
|
|
HCNetSDK.NET_DVR_XML_CONFIG_INPUT struXMLInput = new HCNetSDK.NET_DVR_XML_CONFIG_INPUT(); |
|
|
|
struXMLInput.read(); |
|
|
|
HCNetSDK.BYTE_ARRAY stringRequest = new HCNetSDK.BYTE_ARRAY(1024); |
|
|
|
stringRequest.read(); |
|
|
|
//输入ISAPI协议命令 |
|
|
|
System.arraycopy(url.getBytes(), 0, stringRequest.byValue, 0, url.length()); |
|
|
|
stringRequest.write(); |
|
|
|
struXMLInput.dwSize = struXMLInput.size(); |
|
|
|
struXMLInput.lpRequestUrl = stringRequest.getPointer(); |
|
|
|
struXMLInput.dwRequestUrlLen = url.length(); |
|
|
|
struXMLInput.lpInBuffer = null; |
|
|
|
struXMLInput.dwInBufferSize = 0; |
|
|
|
struXMLInput.write(); |
|
|
|
|
|
|
|
HCNetSDK.BYTE_ARRAY stringXMLOut = new HCNetSDK.BYTE_ARRAY(8 * 1024); |
|
|
|
stringXMLOut.read(); |
|
|
|
HCNetSDK.BYTE_ARRAY struXMLStatus = new HCNetSDK.BYTE_ARRAY(1024); |
|
|
|
struXMLStatus.read(); |
|
|
|
HCNetSDK.NET_DVR_XML_CONFIG_OUTPUT struXMLOutput = new HCNetSDK.NET_DVR_XML_CONFIG_OUTPUT(); |
|
|
|
struXMLOutput.read(); |
|
|
|
struXMLOutput.dwSize = struXMLOutput.size(); |
|
|
|
struXMLOutput.lpOutBuffer = stringXMLOut.getPointer(); |
|
|
|
struXMLOutput.dwOutBufferSize = stringXMLOut.size(); |
|
|
|
struXMLOutput.lpStatusBuffer = struXMLStatus.getPointer(); |
|
|
|
struXMLOutput.dwStatusSize = struXMLStatus.size(); |
|
|
|
struXMLOutput.write(); |
|
|
|
|
|
|
|
if(hCNetSDK.NET_DVR_STDXMLConfig(lUserID,struXMLInput,struXMLOutput)){ |
|
|
|
stringXMLOut.read(); |
|
|
|
System.out.println("输出文本大小:" + struXMLOutput.dwReturnedXMLSize); |
|
|
|
//打印输出XML文本 |
|
|
|
String strOutXML = new String(stringXMLOut.byValue).trim(); |
|
|
|
System.out.println(strOutXML); |
|
|
|
struXMLStatus.read(); |
|
|
|
String strStatus = new String(struXMLStatus.byValue).trim(); |
|
|
|
System.out.println(strStatus); |
|
|
|
return strOutXML; |
|
|
|
}else{ |
|
|
|
System.out.println("获取布防信息失败:" + hCNetSDK.NET_DVR_GetLastError()); |
|
|
|
return null; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public int getStatus() { |
|
|
|
if(lUserID != 0 && lAlarmHandle != -1){ |
|
|
|
return 1; |
|
|
|
} |
|
|
|
return -1; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 动态库加载 |
|
|
|
* |
|
|
|
|