@@ -61,6 +61,14 @@ | |||||
<systemPath>${project.basedir}/lib/jna-1.0.0.jar</systemPath> | <systemPath>${project.basedir}/lib/jna-1.0.0.jar</systemPath> | ||||
</dependency> | </dependency> | ||||
<dependency> | |||||
<groupId>com.iformall.haikang</groupId> | |||||
<artifactId>jna</artifactId> | |||||
<version>4.5.2</version> | |||||
<scope>system</scope> | |||||
<systemPath>${project.basedir}/lib/jna-4.5.2.jar</systemPath> | |||||
</dependency> | |||||
<dependency> | <dependency> | ||||
<groupId>com.iformall.haikang</groupId> | <groupId>com.iformall.haikang</groupId> | ||||
<artifactId>examples</artifactId> | <artifactId>examples</artifactId> | ||||
@@ -68,6 +76,7 @@ | |||||
<scope>system</scope> | <scope>system</scope> | ||||
<systemPath>${project.basedir}/lib/examples-1.0.0.jar</systemPath> | <systemPath>${project.basedir}/lib/examples-1.0.0.jar</systemPath> | ||||
</dependency> | </dependency> | ||||
</dependencies> | </dependencies> | ||||
</project> | </project> |
@@ -0,0 +1,38 @@ | |||||
[2025-01-02 11:35:24.775][ERR] CCoreGlobalCtrlBase::LoadDSo, HPR_LoadDSo Failed, Path[C:/project/bjAirport/bjairService/lib/zlib1.dll] syserror[126] | |||||
[2025-01-02 11:35:24.775][ERR] Load zlib failed[syserr: 126] | |||||
[2025-01-02 11:35:24.775][INF] The COM:HCCoreBase ver is 6.1.4.15, 2020_03_05. Async:1. | |||||
[2025-01-02 11:35:24.775][INF] The COM:Core ver is 6.1.9.48, 2023_04_10. Async:1. | |||||
[2025-01-02 11:35:24.775][INF] This HCNetSDK ver is 6.1.9.48 Ver 2023_04_10. | |||||
[2025-01-02 11:35:25.213][INF] Login dev 192.168.2.200:8000. | |||||
[2025-01-02 11:35:25.213][INF] dwTotalNum[2048] | |||||
[2025-01-02 11:35:25.215][INF] Private connect 192.168.2.200:8000 sock=2856 this=0x1da841b4 cmd=0x10000 port=51612 | |||||
[2025-01-02 11:35:25.215][INF] LogonDev1 in[192.168.2.200:8000] | |||||
[2025-01-02 11:35:25.218][DBG] CCoreGlobalCtrlBase::LoadDSo, HPR_LoadDSo Succ, Path[C:/project/bjAirport/bjairService/lib/libcrypto-1_1-x64.dll], hHandleRet[852492288] | |||||
[2025-01-02 11:35:25.218][DBG] Load [libcrypto-1_1-x64.dll] SUCC, Real Path[C:\project\bjAirport\bjairService\lib\libcrypto-1_1-x64.dll] | |||||
[2025-01-02 11:35:25.221][DBG] CCoreGlobalCtrlBase::LoadDSo, HPR_LoadDSo Succ, Path[C:/project/bjAirport/bjairService/lib/libssl-1_1-x64.dll], hHandleRet[851574784] | |||||
[2025-01-02 11:35:25.221][DBG] Load [libssl-1_1-x64.dll] SUCC, Real Path[C:\project\bjAirport\bjairService\lib\libssl-1_1-x64.dll] | |||||
[2025-01-02 11:35:25.221][INF] SSLTRANSAPI::IsAllAPILoaded, SSL_library_init Unload | |||||
[2025-01-02 11:35:25.221][INF] OpenSSL, Not All Function Loaded! | |||||
[2025-01-02 11:35:25.221][INF] SSLTRANSAPI::PrintVersion, OpenSSL version info [OpenSSL 1.1.1l 24 Aug 2021] | |||||
[2025-01-02 11:35:25.221][INF] CSSLTrans::SSLCtxInit, dwSSLVersion[6], m_fnTLSServerMethod | |||||
[2025-01-02 11:35:25.224][ERR] CSSLTrans::SSLTrans_CTX_Load_CA, invalid path[C:/project/bjAirport/bjairService/lib/cert/\] | |||||
[2025-01-02 11:35:36.363][DBG] CComBase::Load, Load szDllPath[C:/project/bjAirport/bjairService/lib/HCNetSDKCom/HCVoiceTalk.dll] SUCC | |||||
[2025-01-02 11:35:36.365][INF] AbilityAnalyze---Init-- start | |||||
[2025-01-02 11:35:36.406][INF] The COM:VoiceTalk ver is 6.1.9.48, 2023_04_10. | |||||
[2025-01-02 11:35:36.576][DBG] CComBase::Load, Load szDllPath[C:/project/bjAirport/bjairService/lib/HCNetSDKCom/HCGeneralCfgMgr.dll] SUCC | |||||
[2025-01-02 11:35:36.579][INF] The COM:HCGeneralCfgMgr ver is 6.1.9.48, 2023_04_10. | |||||
[2025-01-02 11:35:36.731][DBG] CComBase::Load, Load szDllPath[C:/project/bjAirport/bjairService/lib/HCNetSDKCom/HCPlayBack.dll] SUCC | |||||
[2025-01-02 11:35:36.731][INF] The COM:HCPlayback ver is 6.1.9.48, 2023_04_10. | |||||
[2025-01-02 11:35:36.878][DBG] CComBase::Load, Load szDllPath[C:/project/bjAirport/bjairService/lib/HCNetSDKCom/HCIndustry.dll] SUCC | |||||
[2025-01-02 11:35:36.878][INF] The COM:HCIndustry ver is 6.1.9.48, 2023_04_10. | |||||
[2025-01-02 11:35:37.026][DBG] CComBase::Load, Load szDllPath[C:/project/bjAirport/bjairService/lib/HCNetSDKCom/HCDisplay.dll] SUCC | |||||
[2025-01-02 11:35:37.028][INF] The COM:HCDisplay ver is 6.1.9.48, 2023_04_10. | |||||
[2025-01-02 11:35:37.182][DBG] CComBase::Load, Load szDllPath[C:/project/bjAirport/bjairService/lib/HCNetSDKCom/HCPreview.dll] SUCC | |||||
[2025-01-02 11:35:37.182][INF] The COM:Preview ver is 6.1.9.48, 2023_04_10. | |||||
[2025-01-02 11:35:37.323][DBG] CComBase::Load, Load szDllPath[C:/project/bjAirport/bjairService/lib/HCNetSDKCom/HCAlarm.dll] SUCC | |||||
[2025-01-02 11:35:37.325][INF] The COM:HCAlarm ver is 6.1.9.48, 2023_04_10. | |||||
[2025-01-02 11:35:37.328][INF] Private connect 192.168.2.200:8000 sock=2932 this=0x1da841b4 cmd=0x117000 port=51616 | |||||
[2025-01-02 11:35:37.331][DBG] SimpleSTDCommandToDvr with out cmd[GET /ISAPI/Intelligent/FDLib], input size[0], max segment length[163840] | |||||
[2025-01-02 11:39:37.849][INF] Private connect 192.168.2.200:8000 sock=2964 this=0x1da841b4 cmd=0x11631d port=51684 | |||||
[2025-01-02 11:39:37.855][DBG] [0] Close upload link: 1da841b4! | |||||
[2025-01-02 11:39:37.855][ERR] CMemberMgrBase::AllocIndex2, MemberStart Failed, iIndex[0] |
@@ -0,0 +1,380 @@ | |||||
package com.iformall.haikang.alarm; | |||||
import com.iformall.haikang.alarm.common.HCNetSDK; | |||||
import com.iformall.haikang.alarm.common.osSelect; | |||||
import com.sun.jna.Native; | |||||
import com.sun.jna.Pointer; | |||||
import java.util.Scanner; | |||||
public class Alarm { | |||||
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; //报警监听回调函数 | |||||
/** | |||||
* 动态库加载 | |||||
* | |||||
* @return | |||||
*/ | |||||
private static boolean createSDKInstance() { | |||||
if (hCNetSDK == null) { | |||||
synchronized (HCNetSDK.class) { | |||||
String strDllPath = ""; | |||||
try { | |||||
if (osSelect.isWindows()) | |||||
//win系统加载库路径 | |||||
strDllPath = System.getProperty("user.dir") + "\\lib\\HCNetSDK.dll"; | |||||
else if (osSelect.isLinux()) | |||||
//Linux系统加载库路径 | |||||
strDllPath = System.getProperty("user.dir") + "/lib/libhcnetsdk.so"; | |||||
hCNetSDK = (HCNetSDK) Native.loadLibrary(strDllPath, HCNetSDK.class); | |||||
} catch (Exception ex) { | |||||
System.out.println("loadLibrary: " + strDllPath + " Error: " + ex.getMessage()); | |||||
return false; | |||||
} | |||||
} | |||||
} | |||||
return true; | |||||
} | |||||
/** | |||||
* @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( "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"); | |||||
} | |||||
} | |||||
} | |||||
//设备注销 | |||||
Alarm.logoutDev(lUserID); | |||||
//释放SDK | |||||
hCNetSDK.NET_DVR_Cleanup(); | |||||
return; | |||||
} | |||||
/** | |||||
* 登录设备,支持 V40 和 V30 版本,功能一致。 | |||||
* | |||||
* @param ip 设备IP地址 | |||||
* @param port SDK端口,默认为设备的8000端口 | |||||
* @param user 设备用户名 | |||||
* @param psw 设备密码 | |||||
* @return 登录成功返回用户ID,失败返回-1 | |||||
*/ | |||||
public static 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_DEVICEINFO_V40 deviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V40(); | |||||
// 设置设备IP地址 | |||||
byte[] deviceAddress = new byte[HCNetSDK.NET_DVR_DEV_ADDRESS_MAX_LEN]; | |||||
byte[] ipBytes = ip.getBytes(); | |||||
System.arraycopy(ipBytes, 0, deviceAddress, 0, Math.min(ipBytes.length, deviceAddress.length)); | |||||
loginInfo.sDeviceAddress = deviceAddress; | |||||
// 设置用户名和密码 | |||||
byte[] userName = new byte[HCNetSDK.NET_DVR_LOGIN_USERNAME_MAX_LEN]; | |||||
byte[] password = psw.getBytes(); | |||||
System.arraycopy(user.getBytes(), 0, userName, 0, Math.min(user.length(), userName.length)); | |||||
System.arraycopy(password, 0, loginInfo.sPassword, 0, Math.min(password.length, loginInfo.sPassword.length)); | |||||
loginInfo.sUserName = userName; | |||||
// 设置端口和登录模式 | |||||
loginInfo.wPort = port; | |||||
loginInfo.bUseAsynLogin = false; // 同步登录 | |||||
loginInfo.byLoginMode = 0; // 使用SDK私有协议 | |||||
// 执行登录操作 | |||||
int userID = hCNetSDK.NET_DVR_Login_V40(loginInfo, deviceInfo); | |||||
if (userID == -1) { | |||||
System.err.println("登录失败,错误码为: " + hCNetSDK.NET_DVR_GetLastError()); | |||||
} else { | |||||
System.out.println(ip + " 设备登录成功!"); | |||||
// 处理通道号逻辑 | |||||
int startDChan = deviceInfo.struDeviceV30.byStartDChan; | |||||
System.out.println("预览起始通道号: " + startDChan); | |||||
} | |||||
return userID; // 返回登录结果 | |||||
} | |||||
/** | |||||
* 设备登录V30 | |||||
* @param ip 设备IP | |||||
* @param port SDK端口,默认设备的8000端口 | |||||
* @param user 设备用户名 | |||||
* @param psw 设备密码 | |||||
*/ | |||||
public static void loginDeviceV30(String ip, short port, String user, String psw) { | |||||
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); | |||||
System.out.println("UsID:" + lUserID); | |||||
if ((lUserID == -1) || (lUserID == 0xFFFFFFFF)) { | |||||
System.out.println("登录失败,错误码为" + hCNetSDK.NET_DVR_GetLastError()); | |||||
return; | |||||
} else { | |||||
System.out.println(ip + ":设备登录成功!"); | |||||
return; | |||||
} | |||||
} | |||||
/** | |||||
* 报警布防 | |||||
* @param userID 设备登录句柄ID | |||||
* @return | |||||
*/ | |||||
public static int setAlarmChan(int userID ) { | |||||
if (userID == -1) { | |||||
System.out.println("请先注册"); | |||||
return -1; | |||||
} | |||||
if (lAlarmHandle < 0)//尚未布防,需要布防 | |||||
{ | |||||
//报警布防参数设置 | |||||
HCNetSDK.NET_DVR_SETUPALARM_PARAM alarmInfo = new HCNetSDK.NET_DVR_SETUPALARM_PARAM(); | |||||
alarmInfo.dwSize = alarmInfo.size(); | |||||
alarmInfo.byLevel = 0; //布防等级 | |||||
alarmInfo.byAlarmInfoType = 1; // 智能交通报警信息上传类型:0- 老报警信息(NET_DVR_PLATE_RESULT),1- 新报警信息(NET_ITS_PLATE_RESULT) | |||||
alarmInfo.byDeployType = 0; //布防类型:0-客户端布防,1-实时布防,客户端布防仅支持一路 | |||||
alarmInfo.write(); | |||||
lAlarmHandle= hCNetSDK.NET_DVR_SetupAlarmChan_V41(userID, alarmInfo); | |||||
if (lAlarmHandle == -1) { | |||||
System.err.println("布防失败,错误码为" + hCNetSDK.NET_DVR_GetLastError()); | |||||
return -1 ; | |||||
} else { | |||||
System.out.println("布防成功"); | |||||
return lAlarmHandle; | |||||
} | |||||
} else { | |||||
System.out.println("设备已经布防,请先撤防!"); | |||||
return lAlarmHandle ; | |||||
} | |||||
} | |||||
/** | |||||
* 设备撤防 | |||||
* @param AlarmHandle 布防句柄 | |||||
*/ | |||||
public static void closedAlarmChan(int AlarmHandle) | |||||
{ | |||||
if (AlarmHandle <= -1) | |||||
{ | |||||
System.out.println("设备未布防,请先布防!"); | |||||
return ; | |||||
} | |||||
if (!hCNetSDK.NET_DVR_CloseAlarmChan(AlarmHandle)) { | |||||
System.err.println("撤防失败,err "+hCNetSDK.NET_DVR_GetLastError()); | |||||
return; | |||||
} | |||||
System.out.println("撤防成功"); | |||||
return; | |||||
} | |||||
/** | |||||
* 报警布防V50接口 | |||||
* | |||||
* @param | |||||
*/ | |||||
public static int setAlarmChanV50(int userID) { | |||||
if (userID == -1) { | |||||
System.out.println("请先注册"); | |||||
return -1; | |||||
} | |||||
if (lAlarmHandle < 0)//尚未布防,需要布防 | |||||
{ | |||||
//报警布防参数设置 | |||||
HCNetSDK.NET_DVR_SETUPALARM_PARAM_V50 m_strAlarmInfoV50 = new HCNetSDK.NET_DVR_SETUPALARM_PARAM_V50(); | |||||
m_strAlarmInfoV50.dwSize = m_strAlarmInfoV50.size(); | |||||
m_strAlarmInfoV50.byLevel = 0; //布防等级 | |||||
m_strAlarmInfoV50.byAlarmInfoType = 1; // 智能交通报警信息上传类型:0- 老报警信息(NET_DVR_PLATE_RESULT),1- 新报警信息(NET_ITS_PLATE_RESULT) | |||||
m_strAlarmInfoV50.byRetAlarmTypeV40 =1; //0- 移动侦测、视频丢失、遮挡、IO信号量等报警信息以普通方式上传(报警类型:COMM_ALARM_V30,报警信息结构体:NET_DVR_ALARMINFO_V30), | |||||
// 1- 报警信息以数据可变长方式上传(报警类型:COMM_ALARM_V40,报警信息结构体:NET_DVR_ALARMINFO_V40,设备若不支持则仍以普通方式上传) | |||||
m_strAlarmInfoV50.byDeployType = 0; //布防类型:0-客户端布防,1-实时布防 | |||||
m_strAlarmInfoV50.write(); | |||||
lAlarmHandle= hCNetSDK.NET_DVR_SetupAlarmChan_V50(userID, m_strAlarmInfoV50,Pointer.NULL,0); | |||||
if (lAlarmHandle == -1) { | |||||
System.err.println("布防失败,错误码为" + hCNetSDK.NET_DVR_GetLastError()); | |||||
return -1; | |||||
} else { | |||||
System.out.println("布防成功"); | |||||
return lAlarmHandle; | |||||
} | |||||
} else { | |||||
System.out.println("设备已经布防,请先撤防!"); | |||||
return lAlarmHandle; | |||||
} | |||||
} | |||||
/** | |||||
* 开启监听 | |||||
* | |||||
* @param ip 监听IP | |||||
* @param port 监听端口 | |||||
*/ | |||||
public static int startListen(String ip, short port) { | |||||
if (lListenHandle <= 0) | |||||
{ | |||||
if (fMSFCallBack == null) { | |||||
fMSFCallBack = new FMSGCallBack(); | |||||
} | |||||
lListenHandle = hCNetSDK.NET_DVR_StartListen_V30(ip, port,fMSFCallBack, null); | |||||
if (lListenHandle == -1) { | |||||
System.out.println("监听失败" + hCNetSDK.NET_DVR_GetLastError()); | |||||
return -1; | |||||
} else { | |||||
System.out.println("监听成功"); | |||||
return lListenHandle; | |||||
} | |||||
}else { | |||||
System.out.println("监听已经开启,请先停止监听!"); | |||||
return lListenHandle; | |||||
} | |||||
} | |||||
/** | |||||
* 停止监听 | |||||
* @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 | |||||
*/ | |||||
public static void logoutDev(int userID) { | |||||
if (userID>-1) | |||||
{ | |||||
if (hCNetSDK.NET_DVR_Logout(userID)) { | |||||
System.out.println("注销成功"); | |||||
return; | |||||
} | |||||
}else | |||||
{ | |||||
System.out.println("设备未注册,请先注册"); | |||||
return; | |||||
} | |||||
return; | |||||
} | |||||
} |
@@ -0,0 +1,17 @@ | |||||
package com.iformall.haikang.alarm; | |||||
import com.iformall.haikang.alarm.common.HCNetSDK; | |||||
import com.sun.jna.Pointer; | |||||
/** | |||||
* @author jiangxin | |||||
* @create 2022-08-15-17:26 | |||||
*/ | |||||
public class FMSGCallBack implements HCNetSDK.FMSGCallBack { | |||||
//报警信息回调函数 | |||||
public void invoke(int lCommand, HCNetSDK.NET_DVR_ALARMER pAlarmer, Pointer pAlarmInfo, int dwBufLen, Pointer pUser) { | |||||
AlarmDataParse.alarmDataHandle(lCommand, pAlarmer, pAlarmInfo, dwBufLen, pUser); | |||||
return; | |||||
} | |||||
} |
@@ -0,0 +1,28 @@ | |||||
package com.iformall.haikang.alarm; | |||||
import com.iformall.haikang.alarm.common.HCNetSDK; | |||||
import com.sun.jna.Pointer; | |||||
import java.io.FileNotFoundException; | |||||
import java.io.FileOutputStream; | |||||
import java.io.IOException; | |||||
import java.io.UnsupportedEncodingException; | |||||
import java.nio.ByteBuffer; | |||||
import java.text.SimpleDateFormat; | |||||
import java.util.Date; | |||||
public class FMSGCallBack_V31 implements HCNetSDK.FMSGCallBack_V31 { | |||||
//报警信息回调函数 | |||||
public boolean invoke(int lCommand, HCNetSDK.NET_DVR_ALARMER pAlarmer, Pointer pAlarmInfo, int dwBufLen, Pointer pUser) { | |||||
AlarmDataParse.alarmDataHandle(lCommand, pAlarmer, pAlarmInfo, dwBufLen, pUser); | |||||
return true; | |||||
} | |||||
} | |||||
@@ -0,0 +1,29 @@ | |||||
package com.iformall.haikang.alarm.common; | |||||
/** | |||||
* @author | |||||
* @create 2022-03-22-11:13 | |||||
*/ | |||||
public class CommonUtil { | |||||
//SDK时间解析 | |||||
public static String parseTime(int time) | |||||
{ | |||||
int year=(time>>26)+2000; | |||||
int month=(time>>22)&15; | |||||
int day=(time>>17)&31; | |||||
int hour=(time>>12)&31; | |||||
int min=(time>>6)&63; | |||||
int second=(time>>0)&63; | |||||
String sTime=year+"-"+month+"-"+day+"-"+hour+":"+min+":"+second; | |||||
// System.out.println(sTime); | |||||
return sTime; | |||||
} | |||||
} |
@@ -0,0 +1,16 @@ | |||||
package com.iformall.haikang.alarm.common; | |||||
/** | |||||
* @author | |||||
* @create 2022-01-19-16:40 | |||||
*/ | |||||
public class osSelect { | |||||
public static boolean isLinux() { | |||||
return System.getProperty("os.name").toLowerCase().contains("linux"); | |||||
} | |||||
public static boolean isWindows() { | |||||
return System.getProperty("os.name").toLowerCase().contains("windows"); | |||||
} | |||||
} |
@@ -1,7 +1,7 @@ | |||||
package com.iformall.haikang.face; | package com.iformall.haikang.face; | ||||
import com.iformall.haikang.HCNetSDK; | |||||
import com.iformall.haikang.common.osSelect; | |||||
import com.iformall.haikang.face.common.HCNetSDK; | |||||
import com.iformall.haikang.face.common.osSelect; | |||||
import com.sun.jna.Native; | import com.sun.jna.Native; | ||||
import org.dom4j.DocumentException; | import org.dom4j.DocumentException; | ||||
import java.io.IOException; | import java.io.IOException; | ||||
@@ -22,7 +22,7 @@ public class FaceMain { | |||||
{ | { | ||||
synchronized (HCNetSDK.class) | synchronized (HCNetSDK.class) | ||||
{ | { | ||||
String strDllPath = ""; | |||||
String strDllPath = "C:\\project\\bjAirport\\bjairService\\lib\\kuwenjian"; | |||||
try | try | ||||
{ | { | ||||
//System.setProperty("jna.debug_load", "true"); | //System.setProperty("jna.debug_load", "true"); | ||||
@@ -77,7 +77,7 @@ public class FaceMain { | |||||
hCNetSDK.NET_DVR_SetLogToFile(3, "./sdklog", false); | hCNetSDK.NET_DVR_SetLogToFile(3, "./sdklog", false); | ||||
//设备登录 | //设备登录 | ||||
lUserID=loginDevice("10.9.137.190",(short) 8000,"admin","hik12345"); //登录设备 | |||||
lUserID=loginDevice("192.168.2.200",(short) 8000,"admin","wushikeji001"); //登录设备 | |||||
for (boolean exit = false; !exit; ) { | for (boolean exit = false; !exit; ) { | ||||
@@ -1,6 +1,6 @@ | |||||
package com.iformall.haikang.face; | package com.iformall.haikang.face; | ||||
import com.iformall.haikang.HCNetSDK; | |||||
import com.iformall.haikang.common.CommonMethod; | |||||
import com.iformall.haikang.face.common.CommonMethod; | |||||
import com.iformall.haikang.face.common.HCNetSDK; | |||||
import com.sun.jna.Pointer; | import com.sun.jna.Pointer; | ||||
import com.sun.jna.ptr.IntByReference; | import com.sun.jna.ptr.IntByReference; | ||||
import org.dom4j.Document; | import org.dom4j.Document; | ||||
@@ -1,7 +1,7 @@ | |||||
package com.iformall.haikang.face; | package com.iformall.haikang.face; | ||||
import com.iformall.haikang.HCNetSDK; | |||||
import com.iformall.haikang.common.CommonMethod; | |||||
import com.iformall.haikang.face.common.CommonMethod; | |||||
import com.iformall.haikang.face.common.HCNetSDK; | |||||
import com.sun.jna.Pointer; | import com.sun.jna.Pointer; | ||||
import com.sun.jna.ptr.IntByReference; | import com.sun.jna.ptr.IntByReference; | ||||
@@ -2,7 +2,7 @@ package com.iformall.haikang.face; | |||||
import java.io.UnsupportedEncodingException; | import java.io.UnsupportedEncodingException; | ||||
import com.iformall.haikang.HCNetSDK; | |||||
import com.iformall.haikang.face.common.HCNetSDK; | |||||
/** | /** | ||||
* 功能:透传接口实现,透传ISAPI命令 | * 功能:透传接口实现,透传ISAPI命令 | ||||
@@ -1,4 +1,4 @@ | |||||
package com.iformall.haikang.common; | |||||
package com.iformall.haikang.face.common; | |||||
import org.dom4j.Document; | import org.dom4j.Document; | ||||
import org.dom4j.DocumentHelper; | import org.dom4j.DocumentHelper; |
@@ -1,4 +1,4 @@ | |||||
package com.iformall.haikang; | |||||
package com.iformall.haikang.face.common; | |||||
import com.sun.jna.*; | import com.sun.jna.*; |
@@ -1,4 +1,4 @@ | |||||
package com.iformall.haikang.common; | |||||
package com.iformall.haikang.face.common; | |||||
/** | /** | ||||
* @author jiangxin | * @author jiangxin |