From 19f0ccab999f3e4e15cc5f45ff17e4f86c91cd35 Mon Sep 17 00:00:00 2001 From: haidong Date: Wed, 22 May 2024 11:59:03 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=87=E7=BA=A7jar=E5=8C=85=E5=88=B03.0.0?= =?UTF-8?q?=E7=89=88=E6=9C=AC=20=E6=94=AF=E6=8C=81=E6=B5=B7=E5=BA=B7AI?= =?UTF-8?q?=E6=91=84=E5=83=8F=E5=A4=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: haidong --- src/main/java/com/hkversion/AI/AIMain.java | 180 ++++++++++++++++++ .../java/com/hkversion/AlarmDataParse.java | 2 +- 2 files changed, 181 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/hkversion/AI/AIMain.java diff --git a/src/main/java/com/hkversion/AI/AIMain.java b/src/main/java/com/hkversion/AI/AIMain.java new file mode 100644 index 0000000..ca05891 --- /dev/null +++ b/src/main/java/com/hkversion/AI/AIMain.java @@ -0,0 +1,180 @@ +package com.hkversion.AI; + +import com.alibaba.fastjson.JSONException; +import com.common.osSelect; +import com.hkversion.FMSGCallBack_V31; +import com.hkversion.HCNetSDK; +import com.sun.jna.Native; +import com.sun.jna.Pointer; +import com.yzx.callback.AlarmCallback; +import com.yzx.pojo.AlarmDataInfo; + +import java.io.UnsupportedEncodingException; + +public class AIMain { + static HCNetSDK hCNetSDK = null; + static int lUserID = -1;//用户句柄 + static int iCharEncodeType = 0;//设备字符集 + + + + /** + * 根据不同操作系统选择不同的库文件和库路径 + * @return + */ + private static boolean createSDKInstance() + { + if(hCNetSDK == null) + { + synchronized (HCNetSDK.class) + { + String strDllPath = ""; + try + { + //System.setProperty("jna.debug_load", "true"); + 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 + * @throws UnsupportedEncodingException + * @throws InterruptedException + */ + public static void main(String[] args) throws UnsupportedEncodingException, InterruptedException, JSONException { + + + 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(3, ptrByteArray1.getPointer()); + + System.arraycopy(strPath2.getBytes(), 0, ptrByteArray2.byValue, 0, strPath2.length()); + ptrByteArray2.write(); + hCNetSDK.NET_DVR_SetSDKInitCfg(4, 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(2, struComPath.getPointer()); + } + + hCNetSDK.NET_DVR_Init(); + FMSGCallBack_V31 fMSFCallBack_V31 = new FMSGCallBack_V31(new AlarmCallback() { + @Override + public void process(AlarmDataInfo info) { + System.out.println("报警信息:" + info.toString()); + } + }); + Pointer pUser = null; + //设置报警回调函数 + hCNetSDK.NET_DVR_SetDVRMessageCallBack_V31(fMSFCallBack_V31,pUser); + + //开启SDK日志打印 + boolean i= hCNetSDK.NET_DVR_SetLogToFile(3, "./sdklog", false); + + //登录设备 + login_V40("192.168.69.64","admin","yzx@753159",(short)8000); + //报警布防参数设置 + HCNetSDK.NET_DVR_SETUPALARM_PARAM m_strAlarmInfo = new HCNetSDK.NET_DVR_SETUPALARM_PARAM(); + m_strAlarmInfo.dwSize = m_strAlarmInfo.size(); + m_strAlarmInfo.byLevel = 0; //布防等级 + m_strAlarmInfo.byAlarmInfoType = 1; // 智能交通报警信息上传类型:0- 老报警信息(NET_DVR_PLATE_RESULT),1- 新报警信息(NET_ITS_PLATE_RESULT) + m_strAlarmInfo.byDeployType = 0; //布防类型:0-客户端布防,1-实时布防 + m_strAlarmInfo.write(); + //设备布防 + hCNetSDK.NET_DVR_SetupAlarmChan_V41(lUserID, m_strAlarmInfo); + Thread.sleep(20000); + /** + * 撤防,端口监听,注销设备 + */ + AIMain.logout(); + + //释放SDK,程序退出前调用 + hCNetSDK.NET_DVR_Cleanup(); + + } + + + /** + * 设备登录 + * @param ipadress IP地址 + * @param user 用户名 + * @param psw 密码 + * @param port 端口,默认8000 + */ + public static void login_V40(String ipadress, String user, String psw, short port) { + //注册 + HCNetSDK.NET_DVR_USER_LOGIN_INFO m_strLoginInfo = new HCNetSDK.NET_DVR_USER_LOGIN_INFO();//设备登录信息 + String m_sDeviceIP = ipadress;//设备ip地址 + m_strLoginInfo.sDeviceAddress = new byte[HCNetSDK.NET_DVR_DEV_ADDRESS_MAX_LEN]; + System.arraycopy(m_sDeviceIP.getBytes(), 0, m_strLoginInfo.sDeviceAddress, 0, m_sDeviceIP.length()); + String m_sUsername = user;//设备用户名 + m_strLoginInfo.sUserName = new byte[HCNetSDK.NET_DVR_LOGIN_USERNAME_MAX_LEN]; + System.arraycopy(m_sUsername.getBytes(), 0, m_strLoginInfo.sUserName, 0, m_sUsername.length()); + String m_sPassword = psw;//设备密码 + m_strLoginInfo.sPassword = new byte[HCNetSDK.NET_DVR_LOGIN_PASSWD_MAX_LEN]; + System.arraycopy(m_sPassword.getBytes(), 0, m_strLoginInfo.sPassword, 0, m_sPassword.length()); + m_strLoginInfo.wPort = port; //sdk端口 + m_strLoginInfo.bUseAsynLogin = false; //是否异步登录:0- 否,1- 是 + m_strLoginInfo.write(); + HCNetSDK.NET_DVR_DEVICEINFO_V40 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V40();//设备信息 + lUserID = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo); + if (lUserID == -1) { + System.out.println("登录失败,错误码为" + hCNetSDK.NET_DVR_GetLastError()); + return; + } else { + System.out.println("登录成功!"); + m_strDeviceInfo.read(); + iCharEncodeType = m_strDeviceInfo.byCharEncodeType; + return; + + } + } + + /** + * 登出操作 + * + */ + public static void logout(){ + /**登出和清理,释放SDK资源*/ + if (lUserID>=0) + { + if (!hCNetSDK.NET_DVR_Logout(lUserID)) + { + System.out.println("设备注销失败,错误码:" + hCNetSDK.NET_DVR_GetLastError()); + return; + } + System.out.println("设备注销成功!!!"); + } + } +} diff --git a/src/main/java/com/hkversion/AlarmDataParse.java b/src/main/java/com/hkversion/AlarmDataParse.java index 310dff6..550e413 100644 --- a/src/main/java/com/hkversion/AlarmDataParse.java +++ b/src/main/java/com/hkversion/AlarmDataParse.java @@ -977,7 +977,7 @@ public class AlarmDataParse { } break; default: - //System.out.println("报警类型" + Integer.toHexString(lCommand)); + System.out.println("报警类型" + Integer.toHexString(lCommand)); break; } }