Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

225 řádky
6.6 KiB

  1. package com.hkversion.Acs;
  2. import com.alibaba.fastjson.JSONException;
  3. import com.common.osSelect;
  4. import com.hkversion.HCNetSDK;
  5. import com.sun.jna.Native;
  6. import java.io.UnsupportedEncodingException;
  7. public class AcsMain {
  8. static HCNetSDK hCNetSDK = null;
  9. static int lUserID = -1;//用户句柄
  10. static int iCharEncodeType = 0;//设备字符集
  11. /**
  12. * 根据不同操作系统选择不同的库文件和库路径
  13. * @return
  14. */
  15. private static boolean createSDKInstance()
  16. {
  17. if(hCNetSDK == null)
  18. {
  19. synchronized (HCNetSDK.class)
  20. {
  21. String strDllPath = "";
  22. try
  23. {
  24. //System.setProperty("jna.debug_load", "true");
  25. if(osSelect.isWindows())
  26. //win系统加载库路径
  27. strDllPath = System.getProperty("user.dir") + "\\lib\\HCNetSDK.dll";
  28. else if(osSelect.isLinux())
  29. //Linux系统加载库路径
  30. strDllPath = System.getProperty("user.dir") + "/lib/libhcnetsdk.so";
  31. hCNetSDK = (HCNetSDK) Native.loadLibrary(strDllPath, HCNetSDK.class);
  32. }catch (Exception ex) {
  33. System.out.println("loadLibrary: " + strDllPath + " Error: " + ex.getMessage());
  34. return false;
  35. }
  36. }
  37. }
  38. return true;
  39. }
  40. /**
  41. * @param args
  42. * @throws UnsupportedEncodingException
  43. * @throws InterruptedException
  44. */
  45. public static void main(String[] args) throws UnsupportedEncodingException, InterruptedException, JSONException {
  46. if(hCNetSDK == null)
  47. {
  48. if(!createSDKInstance())
  49. {
  50. System.out.println("Load SDK fail");
  51. return;
  52. }
  53. }
  54. //linux系统建议调用以下接口加载组件库
  55. if (osSelect.isLinux())
  56. {
  57. HCNetSDK.BYTE_ARRAY ptrByteArray1 = new HCNetSDK.BYTE_ARRAY(256);
  58. HCNetSDK.BYTE_ARRAY ptrByteArray2 = new HCNetSDK.BYTE_ARRAY(256);
  59. //这里是库的绝对路径,请根据实际情况修改,注意改路径必须有访问权限
  60. String strPath1 = System.getProperty("user.dir") + "/lib/libcrypto.so.1.1";
  61. String strPath2 = System.getProperty("user.dir") + "/lib/libssl.so.1.1";
  62. System.arraycopy(strPath1.getBytes(), 0, ptrByteArray1.byValue, 0, strPath1.length());
  63. ptrByteArray1.write();
  64. hCNetSDK.NET_DVR_SetSDKInitCfg(3, ptrByteArray1.getPointer());
  65. System.arraycopy(strPath2.getBytes(), 0, ptrByteArray2.byValue, 0, strPath2.length());
  66. ptrByteArray2.write();
  67. hCNetSDK.NET_DVR_SetSDKInitCfg(4, ptrByteArray2.getPointer());
  68. String strPathCom = System.getProperty("user.dir") + "/lib/";
  69. HCNetSDK.NET_DVR_LOCAL_SDK_PATH struComPath = new HCNetSDK.NET_DVR_LOCAL_SDK_PATH();
  70. System.arraycopy(strPathCom.getBytes(), 0, struComPath.sPath, 0, strPathCom.length());
  71. struComPath.write();
  72. hCNetSDK.NET_DVR_SetSDKInitCfg(2, struComPath.getPointer());
  73. }
  74. hCNetSDK.NET_DVR_Init();
  75. //开启SDK日志打印
  76. boolean i= hCNetSDK.NET_DVR_SetLogToFile(3, "./sdklog", false);
  77. login_V40("118.122.89.90","admin","yzx123456",(short) 7713); //登陆设备
  78. /**
  79. * 人员管理模块
  80. */
  81. // UserManage.searchUserInfo(lUserID,"s4775"); //查询所有人员
  82. // UserManage.deleteUserInfo(lUserID);
  83. // UserManage.addUserInfo(lUserID,"test20221122"); //添加人员
  84. UserManage.modifyUserInfo(lUserID,"s382268",1);
  85. /**
  86. * 人脸管理模块
  87. */
  88. // FaceManage.searchFaceInfo(lUserID,"u10");
  89. // FaceManage.addFaceByBinary(lUserID,"test20221122");
  90. // FaceManage.addFaceByUrl(lUserID,"test111");
  91. // FaceManage.deleteFaceInfo(lUserID,"test111");
  92. // FaceManage.captureFaceInfo(lUserID);
  93. /**
  94. * 卡号管理模块
  95. */
  96. // CardManage.searchCardInfo(lUserID,"ceshi1");
  97. // CardManage.addCardInfo(lUserID,"12345");
  98. // CardManage.searchCardInfo(lUserID,"test111");
  99. // CardManage.searchAllCardInfo(lUserID);
  100. // CardManage.deleteCardInfo(lUserID,"111");
  101. // CardManage.deleteAllCardInfo(lUserID);
  102. // CardManage.getAllCardNumber(lUserID);
  103. /**
  104. * 指纹管理模块
  105. */
  106. // FingerManage.fingerCapture(lUserID);
  107. // FingerManage.fingerCpaureByisapi(lUserID);
  108. // FingerManage.fingerCpaureByisapi(lUserID);
  109. // FingerManage.SearchFingerInfo(lUserID,"2222");
  110. //指纹数据的BASE64编码
  111. // String fingerdata="";
  112. // FingerManage.setOneFinger(lUserID,"zhangsan",fingerdata);
  113. // FingerManage.deleteFinger(lUserID,"zhangsan");
  114. /**
  115. * 事件查询
  116. */
  117. // EventSearch.searchAllEvent(lUserID);
  118. //多重认证
  119. // MutilCard.setGroupCfg(lUserID);
  120. // MutilCard.setMultiCardCfg(lUserID);
  121. //计划模板
  122. UserManage.setCardTemplate(lUserID,1);
  123. //设备能力获取
  124. // DeviceAbility.getDeviceAbility(lUserID,0x01);
  125. /**
  126. * 增加sleep时间,保证程序一直运行,
  127. */
  128. // Thread.sleep(20000);
  129. /**
  130. * 撤防,端口监听,注销设备
  131. */
  132. AcsMain.logout();
  133. //释放SDK,程序退出前调用
  134. hCNetSDK.NET_DVR_Cleanup();
  135. }
  136. /**
  137. * 设备登录
  138. * @param ipadress IP地址
  139. * @param user 用户名
  140. * @param psw 密码
  141. * @param port 端口,默认8000
  142. */
  143. public static void login_V40(String ipadress, String user, String psw, short port) {
  144. //注册
  145. HCNetSDK.NET_DVR_USER_LOGIN_INFO m_strLoginInfo = new HCNetSDK.NET_DVR_USER_LOGIN_INFO();//设备登录信息
  146. String m_sDeviceIP = ipadress;//设备ip地址
  147. m_strLoginInfo.sDeviceAddress = new byte[HCNetSDK.NET_DVR_DEV_ADDRESS_MAX_LEN];
  148. System.arraycopy(m_sDeviceIP.getBytes(), 0, m_strLoginInfo.sDeviceAddress, 0, m_sDeviceIP.length());
  149. String m_sUsername = user;//设备用户名
  150. m_strLoginInfo.sUserName = new byte[HCNetSDK.NET_DVR_LOGIN_USERNAME_MAX_LEN];
  151. System.arraycopy(m_sUsername.getBytes(), 0, m_strLoginInfo.sUserName, 0, m_sUsername.length());
  152. String m_sPassword = psw;//设备密码
  153. m_strLoginInfo.sPassword = new byte[HCNetSDK.NET_DVR_LOGIN_PASSWD_MAX_LEN];
  154. System.arraycopy(m_sPassword.getBytes(), 0, m_strLoginInfo.sPassword, 0, m_sPassword.length());
  155. m_strLoginInfo.wPort = port; //sdk端口
  156. m_strLoginInfo.bUseAsynLogin = false; //是否异步登录:0- 否,1- 是
  157. m_strLoginInfo.write();
  158. HCNetSDK.NET_DVR_DEVICEINFO_V40 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V40();//设备信息
  159. lUserID = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo);
  160. if (lUserID == -1) {
  161. System.out.println("登录失败,错误码为" + hCNetSDK.NET_DVR_GetLastError());
  162. return;
  163. } else {
  164. System.out.println("登录成功!");
  165. m_strDeviceInfo.read();
  166. iCharEncodeType = m_strDeviceInfo.byCharEncodeType;
  167. return;
  168. }
  169. }
  170. /**
  171. * 登出操作
  172. *
  173. */
  174. public static void logout(){
  175. /**登出和清理,释放SDK资源*/
  176. if (lUserID>=0)
  177. {
  178. if (!hCNetSDK.NET_DVR_Logout(lUserID))
  179. {
  180. System.out.println("设备注销失败,错误码:" + hCNetSDK.NET_DVR_GetLastError());
  181. return;
  182. }
  183. System.out.println("设备注销成功!!!");
  184. }
  185. }
  186. }//AcsMain Class结束