You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

228 lines
6.7 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. // login_V40("175.155.64.18","admin","ADMIN12345",(short) 50030); //登陆设备
  79. /**
  80. * 人员管理模块
  81. */
  82. // UserManage.searchUserInfo(lUserID,"s4775"); //查询所有人员
  83. // UserManage.deleteUserInfo(lUserID);
  84. // UserManage.addUserInfo(lUserID,"test20221122"); //添加人员
  85. // UserManage.modifyUserInfo(lUserID,"u461",1);
  86. /**
  87. * 人脸管理模块
  88. */
  89. // FaceManage.searchFaceInfo(lUserID,"u10");
  90. // FaceManage.addFaceByBinary(lUserID,"test20221122");
  91. // FaceManage.addFaceByUrl(lUserID,"test111");
  92. // FaceManage.deleteFaceInfo(lUserID,"test111");
  93. // FaceManage.captureFaceInfo(lUserID);
  94. /**
  95. * 卡号管理模块
  96. */
  97. // CardManage.searchCardInfo(lUserID,"ceshi1");
  98. // CardManage.addCardInfo(lUserID,"12345");
  99. // CardManage.searchCardInfo(lUserID,"test111");
  100. // CardManage.searchAllCardInfo(lUserID);
  101. // CardManage.deleteCardInfo(lUserID,"111");
  102. // CardManage.deleteAllCardInfo(lUserID);
  103. // CardManage.getAllCardNumber(lUserID);
  104. /**
  105. * 指纹管理模块
  106. */
  107. // FingerManage.fingerCapture(lUserID);
  108. // FingerManage.fingerCpaureByisapi(lUserID);
  109. // FingerManage.fingerCpaureByisapi(lUserID);
  110. // FingerManage.SearchFingerInfo(lUserID,"2222");
  111. //指纹数据的BASE64编码
  112. // String fingerdata="";
  113. // FingerManage.setOneFinger(lUserID,"zhangsan",fingerdata);
  114. // FingerManage.deleteFinger(lUserID,"zhangsan");
  115. /**
  116. * 事件查询
  117. */
  118. // EventSearch.searchAllEvent(lUserID);
  119. //多重认证
  120. // MutilCard.setGroupCfg(lUserID);
  121. // MutilCard.setMultiCardCfg(lUserID);
  122. //计划模板
  123. // UserManage.setCardTemplate(lUserID,1,2);
  124. //获取计划模板
  125. UserManage.getCardTemplate(lUserID,2);
  126. //设备能力获取
  127. // DeviceAbility.getDeviceAbility(lUserID,0x01);
  128. /**
  129. * 增加sleep时间,保证程序一直运行,
  130. */
  131. // Thread.sleep(20000);
  132. /**
  133. * 撤防,端口监听,注销设备
  134. */
  135. AcsMain.logout();
  136. //释放SDK,程序退出前调用
  137. hCNetSDK.NET_DVR_Cleanup();
  138. }
  139. /**
  140. * 设备登录
  141. * @param ipadress IP地址
  142. * @param user 用户名
  143. * @param psw 密码
  144. * @param port 端口,默认8000
  145. */
  146. public static void login_V40(String ipadress, String user, String psw, short port) {
  147. //注册
  148. HCNetSDK.NET_DVR_USER_LOGIN_INFO m_strLoginInfo = new HCNetSDK.NET_DVR_USER_LOGIN_INFO();//设备登录信息
  149. String m_sDeviceIP = ipadress;//设备ip地址
  150. m_strLoginInfo.sDeviceAddress = new byte[HCNetSDK.NET_DVR_DEV_ADDRESS_MAX_LEN];
  151. System.arraycopy(m_sDeviceIP.getBytes(), 0, m_strLoginInfo.sDeviceAddress, 0, m_sDeviceIP.length());
  152. String m_sUsername = user;//设备用户名
  153. m_strLoginInfo.sUserName = new byte[HCNetSDK.NET_DVR_LOGIN_USERNAME_MAX_LEN];
  154. System.arraycopy(m_sUsername.getBytes(), 0, m_strLoginInfo.sUserName, 0, m_sUsername.length());
  155. String m_sPassword = psw;//设备密码
  156. m_strLoginInfo.sPassword = new byte[HCNetSDK.NET_DVR_LOGIN_PASSWD_MAX_LEN];
  157. System.arraycopy(m_sPassword.getBytes(), 0, m_strLoginInfo.sPassword, 0, m_sPassword.length());
  158. m_strLoginInfo.wPort = port; //sdk端口
  159. m_strLoginInfo.bUseAsynLogin = false; //是否异步登录:0- 否,1- 是
  160. m_strLoginInfo.write();
  161. HCNetSDK.NET_DVR_DEVICEINFO_V40 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V40();//设备信息
  162. lUserID = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo);
  163. if (lUserID == -1) {
  164. System.out.println("登录失败,错误码为" + hCNetSDK.NET_DVR_GetLastError());
  165. return;
  166. } else {
  167. System.out.println("登录成功!");
  168. m_strDeviceInfo.read();
  169. iCharEncodeType = m_strDeviceInfo.byCharEncodeType;
  170. return;
  171. }
  172. }
  173. /**
  174. * 登出操作
  175. *
  176. */
  177. public static void logout(){
  178. /**登出和清理,释放SDK资源*/
  179. if (lUserID>=0)
  180. {
  181. if (!hCNetSDK.NET_DVR_Logout(lUserID))
  182. {
  183. System.out.println("设备注销失败,错误码:" + hCNetSDK.NET_DVR_GetLastError());
  184. return;
  185. }
  186. System.out.println("设备注销成功!!!");
  187. }
  188. }
  189. }//AcsMain Class结束