|
@@ -8,22 +8,31 @@ import com.sun.jna.Pointer; |
|
|
|
|
|
|
|
|
import java.util.Scanner; |
|
|
import java.util.Scanner; |
|
|
|
|
|
|
|
|
|
|
|
import javax.annotation.PreDestroy; |
|
|
|
|
|
|
|
|
|
|
|
import org.apache.commons.logging.LogFactory; |
|
|
|
|
|
import org.slf4j.Logger; |
|
|
|
|
|
import org.slf4j.LoggerFactory; |
|
|
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
|
|
|
|
|
|
|
@Service |
|
|
public class Alarm { |
|
|
public class Alarm { |
|
|
|
|
|
|
|
|
|
|
|
private final Logger logger = LoggerFactory.getLogger(this.getClass()); |
|
|
|
|
|
|
|
|
static HCNetSDK hCNetSDK = null; |
|
|
|
|
|
static int lUserID = -1;//用户句柄 实现对设备登录 |
|
|
|
|
|
static int lAlarmHandle =-1;//报警布防句柄 |
|
|
|
|
|
static int lListenHandle = -1;//报警监听句柄 |
|
|
|
|
|
static FMSGCallBack_V31 fMSFCallBack_V31 = null; //报警布防回调函数 |
|
|
|
|
|
static FMSGCallBack fMSFCallBack=null; //报警监听回调函数 |
|
|
|
|
|
|
|
|
private HCNetSDK hCNetSDK = null; |
|
|
|
|
|
private int lUserID = -1;//用户句柄 实现对设备登录 |
|
|
|
|
|
private int lAlarmHandle =-1;//报警布防句柄 |
|
|
|
|
|
private int lListenHandle = -1;//监听句柄 |
|
|
|
|
|
private FMSGCallBack_V31 fMSFCallBack_V31 = null; //报警布防回调函数 |
|
|
|
|
|
private FMSGCallBack fMSFCallBack=null; //报警监听回调函数 |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 动态库加载 |
|
|
* 动态库加载 |
|
|
* |
|
|
* |
|
|
* @return |
|
|
* @return |
|
|
*/ |
|
|
*/ |
|
|
private static boolean createSDKInstance() { |
|
|
|
|
|
|
|
|
private boolean createSDKInstance() { |
|
|
if (hCNetSDK == null) { |
|
|
if (hCNetSDK == null) { |
|
|
synchronized (HCNetSDK.class) { |
|
|
synchronized (HCNetSDK.class) { |
|
|
String strDllPath = ""; |
|
|
String strDllPath = ""; |
|
@@ -36,23 +45,18 @@ public class Alarm { |
|
|
strDllPath = System.getProperty("user.dir") + "/lib/libhcnetsdk.so"; |
|
|
strDllPath = System.getProperty("user.dir") + "/lib/libhcnetsdk.so"; |
|
|
hCNetSDK = (HCNetSDK) Native.loadLibrary(strDllPath, HCNetSDK.class); |
|
|
hCNetSDK = (HCNetSDK) Native.loadLibrary(strDllPath, HCNetSDK.class); |
|
|
} catch (Exception ex) { |
|
|
} catch (Exception ex) { |
|
|
System.out.println("loadLibrary: " + strDllPath + " Error: " + ex.getMessage()); |
|
|
|
|
|
|
|
|
logger.error("createSDKInstance loadLibrary: " + strDllPath + " Error: " + ex.getMessage(),ex); |
|
|
return false; |
|
|
return false; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
return true; |
|
|
return true; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* @param args |
|
|
|
|
|
*/ |
|
|
|
|
|
public static void main(String[] args) throws InterruptedException { |
|
|
|
|
|
|
|
|
|
|
|
if (hCNetSDK == null) { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void initSdk() { |
|
|
|
|
|
if (hCNetSDK == null) { |
|
|
if (!createSDKInstance()) { |
|
|
if (!createSDKInstance()) { |
|
|
System.out.println("Load SDK fail"); |
|
|
|
|
|
|
|
|
logger.error("Load SDK fail"); |
|
|
return; |
|
|
return; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
@@ -92,67 +96,175 @@ public class Alarm { |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
/** 设备上传的报警信息是COMM_VCA_ALARM(0x4993)类型, |
|
|
/** 设备上传的报警信息是COMM_VCA_ALARM(0x4993)类型, |
|
|
在SDK初始化之后增加调用NET_DVR_SetSDKLocalCfg(enumType为NET_DVR_LOCAL_CFG_TYPE_GENERAL)设置通用参数NET_DVR_LOCAL_GENERAL_CFG的byAlarmJsonPictureSeparate为1, |
|
|
|
|
|
将Json数据和图片数据分离上传,这样设置之后,报警布防回调函数里面接收到的报警信息类型为COMM_ISAPI_ALARM(0x6009), |
|
|
|
|
|
报警信息结构体为NET_DVR_ALARM_ISAPI_INFO(与设备无关,SDK封装的数据结构),更便于解析。*/ |
|
|
|
|
|
|
|
|
|
|
|
HCNetSDK.NET_DVR_LOCAL_GENERAL_CFG struNET_DVR_LOCAL_GENERAL_CFG = new HCNetSDK.NET_DVR_LOCAL_GENERAL_CFG(); |
|
|
|
|
|
struNET_DVR_LOCAL_GENERAL_CFG.byAlarmJsonPictureSeparate = 1; //设置JSON透传报警数据和图片分离 |
|
|
|
|
|
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); |
|
|
|
|
|
|
|
|
|
|
|
lUserID=Alarm.loginDevice( "10.9.137.17", (short) 8000, "admin", "hik12345"); //登录设备 |
|
|
|
|
|
|
|
|
|
|
|
for (boolean exit = false; !exit; ) { |
|
|
|
|
|
System.out.println("请输入您想要执行的demo实例! (退出请输入yes)"); |
|
|
|
|
|
Scanner input = new Scanner(System.in); |
|
|
|
|
|
String str = input.next(); |
|
|
|
|
|
// 转换为标准输入 |
|
|
|
|
|
str = str.toLowerCase(); |
|
|
|
|
|
if (str.equals("yes")) { |
|
|
|
|
|
// 退出程序 |
|
|
|
|
|
exit = true; |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
switch (str) { |
|
|
|
|
|
case "1": |
|
|
|
|
|
{ |
|
|
|
|
|
System.out.println("\n[Module]报警布防示例代码"); |
|
|
|
|
|
lAlarmHandle=Alarm.setAlarmChan(lUserID);//报警布防,和报警监听二选一即可 |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
case "2": |
|
|
|
|
|
{ |
|
|
|
|
|
System.out.println("\n[Module]报警撤防示例代码"); |
|
|
|
|
|
Alarm.closedAlarmChan(lAlarmHandle); |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
case "3": |
|
|
|
|
|
{ |
|
|
|
|
|
//报警监听不需要登录设备,Alarm.loginDevice登录接口可以注释 |
|
|
|
|
|
System.out.println("\n[Module]开启报警监听示例代码"); |
|
|
|
|
|
lListenHandle = Alarm.startListen("10.9.137.101",(short) 7201); //传入监听PC本机的IP地址和端口 |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
case "4": |
|
|
|
|
|
{ |
|
|
|
|
|
System.out.println("\n[Module]停止监听示例代码"); |
|
|
|
|
|
Alarm.stopListen(lListenHandle); |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
default: |
|
|
|
|
|
{ |
|
|
|
|
|
System.out.println("\n未知的指令操作!请重新输入!\n"); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
在SDK初始化之后增加调用NET_DVR_SetSDKLocalCfg(enumType为NET_DVR_LOCAL_CFG_TYPE_GENERAL)设置通用参数NET_DVR_LOCAL_GENERAL_CFG的byAlarmJsonPictureSeparate为1, |
|
|
|
|
|
将Json数据和图片数据分离上传,这样设置之后,报警布防回调函数里面接收到的报警信息类型为COMM_ISAPI_ALARM(0x6009), |
|
|
|
|
|
报警信息结构体为NET_DVR_ALARM_ISAPI_INFO(与设备无关,SDK封装的数据结构),更便于解析。*/ |
|
|
|
|
|
HCNetSDK.NET_DVR_LOCAL_GENERAL_CFG struNET_DVR_LOCAL_GENERAL_CFG = new HCNetSDK.NET_DVR_LOCAL_GENERAL_CFG(); |
|
|
|
|
|
struNET_DVR_LOCAL_GENERAL_CFG.byAlarmJsonPictureSeparate = 1; //设置JSON透传报警数据和图片分离 |
|
|
|
|
|
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); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@PreDestroy |
|
|
|
|
|
public void onDestory() { |
|
|
|
|
|
//释放SDK |
|
|
|
|
|
if (hCNetSDK != null) { |
|
|
|
|
|
stopListen(); |
|
|
|
|
|
hCNetSDK.NET_DVR_Cleanup(); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 开启监听 |
|
|
|
|
|
* @return |
|
|
|
|
|
*/ |
|
|
|
|
|
public void listen() { |
|
|
|
|
|
if (hCNetSDK == null) { |
|
|
|
|
|
initSdk(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//lUserID=loginDevice( "192.168.2.200", (short) 8000, "admin", "wushikeji001"); //登录设备 |
|
|
|
|
|
|
|
|
|
|
|
lListenHandle = startListen("192.168.2.103",(short) 7201); |
|
|
//设备注销 |
|
|
//设备注销 |
|
|
Alarm.logoutDev(lUserID); |
|
|
|
|
|
//释放SDK |
|
|
|
|
|
hCNetSDK.NET_DVR_Cleanup(); |
|
|
|
|
|
|
|
|
//logoutDev(lUserID); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 停止监听 |
|
|
|
|
|
* @param Handle 监听句柄 |
|
|
|
|
|
*/ |
|
|
|
|
|
public void stopListen() |
|
|
|
|
|
{ |
|
|
|
|
|
int Handle = lListenHandle; |
|
|
|
|
|
if (Handle <= -1) |
|
|
|
|
|
{ |
|
|
|
|
|
logger.info("监听未开启"); |
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
|
|
|
if (!hCNetSDK.NET_DVR_StopListen_V30(Handle)) { |
|
|
|
|
|
logger.error("停止监听失败,err: "+hCNetSDK.NET_DVR_GetLastError()); |
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
|
|
|
logger.info("停止监听成功"); |
|
|
return; |
|
|
return; |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// /** |
|
|
|
|
|
// * @param args |
|
|
|
|
|
// */ |
|
|
|
|
|
// public static void main(String[] args) throws InterruptedException { |
|
|
|
|
|
// |
|
|
|
|
|
// if (hCNetSDK == null) { |
|
|
|
|
|
// if (!createSDKInstance()) { |
|
|
|
|
|
// System.out.println("Load SDK fail"); |
|
|
|
|
|
// return; |
|
|
|
|
|
// } |
|
|
|
|
|
// } |
|
|
|
|
|
// //linux系统建议调用以下接口加载组件库 |
|
|
|
|
|
// if (osSelect.isLinux()) { |
|
|
|
|
|
// HCNetSDK.BYTE_ARRAY ptrByteArray1 = new HCNetSDK.BYTE_ARRAY(256); |
|
|
|
|
|
// HCNetSDK.BYTE_ARRAY ptrByteArray2 = new HCNetSDK.BYTE_ARRAY(256); |
|
|
|
|
|
// //这里是库的绝对路径,请根据实际情况修改,注意改路径必须有访问权限 |
|
|
|
|
|
// String strPath1 = System.getProperty("user.dir") + "/lib/libcrypto.so.1.1"; |
|
|
|
|
|
// String strPath2 = System.getProperty("user.dir") + "/lib/libssl.so.1.1"; |
|
|
|
|
|
// System.arraycopy(strPath1.getBytes(), 0, ptrByteArray1.byValue, 0, strPath1.length()); |
|
|
|
|
|
// ptrByteArray1.write(); |
|
|
|
|
|
// hCNetSDK.NET_DVR_SetSDKInitCfg(HCNetSDK.NET_SDK_INIT_CFG_LIBEAY_PATH, ptrByteArray1.getPointer()); |
|
|
|
|
|
// System.arraycopy(strPath2.getBytes(), 0, ptrByteArray2.byValue, 0, strPath2.length()); |
|
|
|
|
|
// ptrByteArray2.write(); |
|
|
|
|
|
// hCNetSDK.NET_DVR_SetSDKInitCfg(HCNetSDK.NET_SDK_INIT_CFG_SSLEAY_PATH, ptrByteArray2.getPointer()); |
|
|
|
|
|
// String strPathCom = System.getProperty("user.dir") + "/lib/"; |
|
|
|
|
|
// HCNetSDK.NET_DVR_LOCAL_SDK_PATH struComPath = new HCNetSDK.NET_DVR_LOCAL_SDK_PATH(); |
|
|
|
|
|
// System.arraycopy(strPathCom.getBytes(), 0, struComPath.sPath, 0, strPathCom.length()); |
|
|
|
|
|
// struComPath.write(); |
|
|
|
|
|
// hCNetSDK.NET_DVR_SetSDKInitCfg(HCNetSDK.NET_SDK_INIT_CFG_SDK_PATH, struComPath.getPointer()); |
|
|
|
|
|
// } |
|
|
|
|
|
// |
|
|
|
|
|
// /**初始化*/ |
|
|
|
|
|
// hCNetSDK.NET_DVR_Init(); |
|
|
|
|
|
// /**加载日志*/ |
|
|
|
|
|
// hCNetSDK.NET_DVR_SetLogToFile(3, "./sdklog1", false); |
|
|
|
|
|
// //设置报警回调函数 |
|
|
|
|
|
// if (fMSFCallBack_V31 == null) { |
|
|
|
|
|
// fMSFCallBack_V31 = new FMSGCallBack_V31(); |
|
|
|
|
|
// Pointer pUser = null; |
|
|
|
|
|
// if (!hCNetSDK.NET_DVR_SetDVRMessageCallBack_V31(fMSFCallBack_V31, pUser)) { |
|
|
|
|
|
// System.out.println("设置回调函数失败!"); |
|
|
|
|
|
// return; |
|
|
|
|
|
// } else { |
|
|
|
|
|
// System.out.println("设置回调函数成功!"); |
|
|
|
|
|
// } |
|
|
|
|
|
// } |
|
|
|
|
|
// /** 设备上传的报警信息是COMM_VCA_ALARM(0x4993)类型, |
|
|
|
|
|
// 在SDK初始化之后增加调用NET_DVR_SetSDKLocalCfg(enumType为NET_DVR_LOCAL_CFG_TYPE_GENERAL)设置通用参数NET_DVR_LOCAL_GENERAL_CFG的byAlarmJsonPictureSeparate为1, |
|
|
|
|
|
// 将Json数据和图片数据分离上传,这样设置之后,报警布防回调函数里面接收到的报警信息类型为COMM_ISAPI_ALARM(0x6009), |
|
|
|
|
|
// 报警信息结构体为NET_DVR_ALARM_ISAPI_INFO(与设备无关,SDK封装的数据结构),更便于解析。*/ |
|
|
|
|
|
// |
|
|
|
|
|
// HCNetSDK.NET_DVR_LOCAL_GENERAL_CFG struNET_DVR_LOCAL_GENERAL_CFG = new HCNetSDK.NET_DVR_LOCAL_GENERAL_CFG(); |
|
|
|
|
|
// struNET_DVR_LOCAL_GENERAL_CFG.byAlarmJsonPictureSeparate = 1; //设置JSON透传报警数据和图片分离 |
|
|
|
|
|
// 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); |
|
|
|
|
|
// |
|
|
|
|
|
// lUserID=Alarm.loginDevice( "192.168.2.200", (short) 8000, "admin", "wushikeji001"); //登录设备 |
|
|
|
|
|
// |
|
|
|
|
|
// for (boolean exit = false; !exit; ) { |
|
|
|
|
|
// System.out.println("请输入您想要执行的demo实例! (退出请输入yes)"); |
|
|
|
|
|
// Scanner input = new Scanner(System.in); |
|
|
|
|
|
// String str = input.next(); |
|
|
|
|
|
// // 转换为标准输入 |
|
|
|
|
|
// str = str.toLowerCase(); |
|
|
|
|
|
// if (str.equals("yes")) { |
|
|
|
|
|
// // 退出程序 |
|
|
|
|
|
// exit = true; |
|
|
|
|
|
// break; |
|
|
|
|
|
// } |
|
|
|
|
|
// switch (str) { |
|
|
|
|
|
// case "1": |
|
|
|
|
|
// { |
|
|
|
|
|
// System.out.println("\n[Module]报警布防示例代码"); |
|
|
|
|
|
// lAlarmHandle=Alarm.setAlarmChan(lUserID);//报警布防,和报警监听二选一即可 |
|
|
|
|
|
// break; |
|
|
|
|
|
// } |
|
|
|
|
|
// case "2": |
|
|
|
|
|
// { |
|
|
|
|
|
// System.out.println("\n[Module]报警撤防示例代码"); |
|
|
|
|
|
// Alarm.closedAlarmChan(lAlarmHandle); |
|
|
|
|
|
// break; |
|
|
|
|
|
// } |
|
|
|
|
|
// case "3": |
|
|
|
|
|
// { |
|
|
|
|
|
// //报警监听不需要登录设备,Alarm.loginDevice登录接口可以注释 |
|
|
|
|
|
// System.out.println("\n[Module]开启报警监听示例代码"); |
|
|
|
|
|
// lListenHandle = Alarm.startListen("192.168.2.103",(short) 7201); //传入监听PC本机的IP地址和端口 |
|
|
|
|
|
// break; |
|
|
|
|
|
// } |
|
|
|
|
|
// case "4": |
|
|
|
|
|
// { |
|
|
|
|
|
// System.out.println("\n[Module]停止监听示例代码"); |
|
|
|
|
|
// Alarm.stopListen(lListenHandle); |
|
|
|
|
|
// break; |
|
|
|
|
|
// } |
|
|
|
|
|
// default: |
|
|
|
|
|
// { |
|
|
|
|
|
// System.out.println("\n未知的指令操作!请重新输入!\n"); |
|
|
|
|
|
// } |
|
|
|
|
|
// } |
|
|
|
|
|
// } |
|
|
|
|
|
// //设备注销 |
|
|
|
|
|
// Alarm.logoutDev(lUserID); |
|
|
|
|
|
// //释放SDK |
|
|
|
|
|
// hCNetSDK.NET_DVR_Cleanup(); |
|
|
|
|
|
// return; |
|
|
|
|
|
// } |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
@@ -164,7 +276,7 @@ public class Alarm { |
|
|
* @param psw 设备密码 |
|
|
* @param psw 设备密码 |
|
|
* @return 登录成功返回用户ID,失败返回-1 |
|
|
* @return 登录成功返回用户ID,失败返回-1 |
|
|
*/ |
|
|
*/ |
|
|
public static int loginDevice(String ip, short port, String user, String psw) { |
|
|
|
|
|
|
|
|
public int loginDevice(String ip, short port, String user, String psw) { |
|
|
// 创建设备登录信息和设备信息对象 |
|
|
// 创建设备登录信息和设备信息对象 |
|
|
HCNetSDK.NET_DVR_USER_LOGIN_INFO loginInfo = new HCNetSDK.NET_DVR_USER_LOGIN_INFO(); |
|
|
HCNetSDK.NET_DVR_USER_LOGIN_INFO loginInfo = new HCNetSDK.NET_DVR_USER_LOGIN_INFO(); |
|
|
HCNetSDK.NET_DVR_DEVICEINFO_V40 deviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V40(); |
|
|
HCNetSDK.NET_DVR_DEVICEINFO_V40 deviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V40(); |
|
@@ -207,7 +319,7 @@ public class Alarm { |
|
|
* @param user 设备用户名 |
|
|
* @param user 设备用户名 |
|
|
* @param psw 设备密码 |
|
|
* @param psw 设备密码 |
|
|
*/ |
|
|
*/ |
|
|
public static void loginDeviceV30(String ip, short port, String user, String psw) { |
|
|
|
|
|
|
|
|
public void loginDeviceV30(String ip, short port, String user, String psw) { |
|
|
HCNetSDK.NET_DVR_DEVICEINFO_V30 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V30(); |
|
|
HCNetSDK.NET_DVR_DEVICEINFO_V30 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V30(); |
|
|
lUserID = hCNetSDK.NET_DVR_Login_V30(ip, port, user, psw, m_strDeviceInfo); |
|
|
lUserID = hCNetSDK.NET_DVR_Login_V30(ip, port, user, psw, m_strDeviceInfo); |
|
|
System.out.println("UsID:" + lUserID); |
|
|
System.out.println("UsID:" + lUserID); |
|
@@ -225,7 +337,7 @@ public class Alarm { |
|
|
* @param userID 设备登录句柄ID |
|
|
* @param userID 设备登录句柄ID |
|
|
* @return |
|
|
* @return |
|
|
*/ |
|
|
*/ |
|
|
public static int setAlarmChan(int userID ) { |
|
|
|
|
|
|
|
|
public int setAlarmChan(int userID ) { |
|
|
if (userID == -1) { |
|
|
if (userID == -1) { |
|
|
System.out.println("请先注册"); |
|
|
System.out.println("请先注册"); |
|
|
return -1; |
|
|
return -1; |
|
@@ -257,7 +369,7 @@ public class Alarm { |
|
|
* 设备撤防 |
|
|
* 设备撤防 |
|
|
* @param AlarmHandle 布防句柄 |
|
|
* @param AlarmHandle 布防句柄 |
|
|
*/ |
|
|
*/ |
|
|
public static void closedAlarmChan(int AlarmHandle) |
|
|
|
|
|
|
|
|
public void closedAlarmChan(int AlarmHandle) |
|
|
{ |
|
|
{ |
|
|
if (AlarmHandle <= -1) |
|
|
if (AlarmHandle <= -1) |
|
|
{ |
|
|
{ |
|
@@ -277,7 +389,7 @@ public class Alarm { |
|
|
* |
|
|
* |
|
|
* @param |
|
|
* @param |
|
|
*/ |
|
|
*/ |
|
|
public static int setAlarmChanV50(int userID) { |
|
|
|
|
|
|
|
|
public int setAlarmChanV50(int userID) { |
|
|
if (userID == -1) { |
|
|
if (userID == -1) { |
|
|
System.out.println("请先注册"); |
|
|
System.out.println("请先注册"); |
|
|
return -1; |
|
|
return -1; |
|
@@ -314,9 +426,8 @@ public class Alarm { |
|
|
* @param ip 监听IP |
|
|
* @param ip 监听IP |
|
|
* @param port 监听端口 |
|
|
* @param port 监听端口 |
|
|
*/ |
|
|
*/ |
|
|
public static int startListen(String ip, short port) { |
|
|
|
|
|
if (lListenHandle <= 0) |
|
|
|
|
|
{ |
|
|
|
|
|
|
|
|
public int startListen(String ip, short port) { |
|
|
|
|
|
if (lListenHandle <= 0){ |
|
|
if (fMSFCallBack == null) { |
|
|
if (fMSFCallBack == null) { |
|
|
fMSFCallBack = new FMSGCallBack(); |
|
|
fMSFCallBack = new FMSGCallBack(); |
|
|
} |
|
|
} |
|
@@ -335,31 +446,11 @@ public class Alarm { |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 停止监听 |
|
|
|
|
|
* @param Handle 监听句柄 |
|
|
|
|
|
*/ |
|
|
|
|
|
public static void stopListen(int Handle) |
|
|
|
|
|
{ |
|
|
|
|
|
if (Handle <= -1) |
|
|
|
|
|
{ |
|
|
|
|
|
System.out.println("监听未开启"); |
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
|
|
|
if (!hCNetSDK.NET_DVR_StopListen_V30(Handle)) { |
|
|
|
|
|
System.err.println("停止监听失败,err: "+hCNetSDK.NET_DVR_GetLastError()); |
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
|
|
|
System.out.println("停止监听成功"); |
|
|
|
|
|
return; |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 设备注销 |
|
|
* 设备注销 |
|
|
* @param |
|
|
* @param |
|
|
*/ |
|
|
*/ |
|
|
public static void logoutDev(int userID) { |
|
|
|
|
|
|
|
|
public void logoutDev(int userID) { |
|
|
|
|
|
|
|
|
if (userID>-1) |
|
|
if (userID>-1) |
|
|
{ |
|
|
{ |
|
|