Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

100 строки
5.4 KiB

  1. package com.hkversion.Acs;
  2. import com.hkversion.HCNetSDK;
  3. import com.sun.jna.ptr.IntByReference;
  4. /**
  5. * 门禁设备管理:
  6. * 1、获取(设置)门禁主机参数
  7. * 2、获取门禁主机工作状态
  8. */
  9. public final class ACSManage {
  10. /**
  11. * 获取(设置)门禁主机参数
  12. *
  13. * @param lUserID 用户登录句柄
  14. */
  15. public static void acsCfg(int lUserID) {
  16. /**获取门禁主机参数*/
  17. HCNetSDK.NET_DVR_ACS_CFG struAcsCfg = new HCNetSDK.NET_DVR_ACS_CFG();
  18. struAcsCfg.dwSize = struAcsCfg.size();
  19. struAcsCfg.write();
  20. IntByReference intByReference = new IntByReference(0);
  21. boolean b_GetAcsCfg = AcsMain.hCNetSDK.NET_DVR_GetDVRConfig(lUserID, HCNetSDK.NET_DVR_GET_ACS_CFG, 0xFFFFFFFF, struAcsCfg.getPointer(),
  22. struAcsCfg.size(), intByReference);
  23. if (b_GetAcsCfg = false) {
  24. System.out.println("获取门禁主机参数,错误码为" + AcsMain.hCNetSDK.NET_DVR_GetLastError());
  25. return;
  26. } else {
  27. System.out.println("获取门禁主机参数成功");
  28. struAcsCfg.read();
  29. System.out.println("1.是否显示抓拍图片:" + struAcsCfg.byShowCapPic + "\n"); //是否显示抓拍图片, 0-不显示,1-显示
  30. System.out.println("2.是否显示卡号:" + struAcsCfg.byShowCardNo + "\n"); //是否显示卡号,0-不显示,1-显示
  31. System.out.println("3.是否开启语音提示:" + struAcsCfg.byVoicePrompt + "\n"); //是否启用语音提示,0-不启用,1-启用
  32. System.out.println("4.联动抓图是否上传:" + struAcsCfg.byUploadCapPic + "\n"); //联动抓拍是否上传图片,0-不上传,1-上传
  33. }
  34. /**设置门禁主机参数*/
  35. struAcsCfg.byShowCardNo = 1; //开启显示卡号
  36. struAcsCfg.byVoicePrompt = 0; //关闭语音提示
  37. struAcsCfg.byUploadCapPic = 1; //开启联动抓图后,设备上抓拍的图片才会通过报警布防上传,否则没有不上传
  38. struAcsCfg.byShowCapPic = 1;
  39. struAcsCfg.write();
  40. boolean b_SetAcsCfg = AcsMain.hCNetSDK.NET_DVR_SetDVRConfig(lUserID, HCNetSDK.NET_DVR_SET_ACS_CFG, 0xFFFFFFFF, struAcsCfg.getPointer(), struAcsCfg.size());
  41. if (b_SetAcsCfg = false) {
  42. System.out.println("设置门禁主机参数,错误码为:" + AcsMain.hCNetSDK.NET_DVR_GetLastError());
  43. return;
  44. } else {
  45. System.out.println("设置门禁主机参数成功!!!");
  46. }
  47. }
  48. /**
  49. * 获取门禁主机工作状态
  50. *
  51. * @param lUserID 用户登录句柄
  52. */
  53. public static void getAcsStatus(int lUserID){
  54. HCNetSDK.NET_DVR_ACS_WORK_STATUS_V50 netDvrAcsWorkStatusV50 = new HCNetSDK.NET_DVR_ACS_WORK_STATUS_V50();
  55. netDvrAcsWorkStatusV50.dwSize = netDvrAcsWorkStatusV50.size();
  56. netDvrAcsWorkStatusV50.write();
  57. IntByReference intByReference = new IntByReference(0);
  58. boolean b_GetAcsStatus = AcsMain.hCNetSDK.NET_DVR_GetDVRConfig(lUserID, HCNetSDK.NET_DVR_GET_ACS_WORK_STATUS_V50, 0xFFFFFFFF, netDvrAcsWorkStatusV50.getPointer(),
  59. netDvrAcsWorkStatusV50.size(), intByReference);
  60. if (b_GetAcsStatus = false) {
  61. System.out.println("获取门禁主机工作状态,错误码为:" + AcsMain.hCNetSDK.NET_DVR_GetLastError());
  62. return;
  63. } else {
  64. System.out.println("获取门禁主机工作状态成功!!!");
  65. netDvrAcsWorkStatusV50.read();
  66. System.out.println("1.门锁状态(或者梯控的继电器开合状态):" + netDvrAcsWorkStatusV50.byDoorLockStatus[0] + "\n"); //门锁状态:0- 正常关,1- 正常开,2- 短路报警,3- 断路报警,4- 异常报警
  67. System.out.println("2.门状态(或者梯控的楼层状态):" + netDvrAcsWorkStatusV50.byDoorStatus[0] + "\n"); //门状态(或者梯控的楼层状态):1- 休眠,2- 常开状态(对于梯控,表示自由状态),3- 常闭状态(对于梯控,表示禁用状态),4- 普通状态(对于梯控,表示受控状态)
  68. System.out.println("3.门磁状态:" + netDvrAcsWorkStatusV50.byMagneticStatus[0] + "\n"); //门磁状态,0-正常关,1-正常开,2-短路报警,3-断路报警,4-异常报警
  69. System.out.println("4.事件报警输入状态:" + netDvrAcsWorkStatusV50.byCaseStatus[0] + "\n"); //事件报警输入状态:0- 无输入,1- 有输入
  70. }
  71. }
  72. /**
  73. * 远程控门
  74. * @param userID
  75. */
  76. public static void remoteControlGate(int userID)
  77. {
  78. /**第二个参数lGatewayIndex
  79. [in] 门禁序号(楼层编号、锁ID),从1开始,-1表示对所有门(或者梯控的所有楼层)进行操作
  80. 第三个参数dwStaic
  81. [in] 命令值:0- 关闭(对于梯控,表示受控),1- 打开(对于梯控,表示开门),2- 常开(对于梯控,表示自由、通道状态),3- 常关(对于梯控,表示禁用),4- 恢复(梯控,普通状态),5- 访客呼梯(梯控),6- 住户呼梯(梯控)*/
  82. boolean b_gate=AcsMain.hCNetSDK.NET_DVR_ControlGateway(userID,1,1);
  83. if (b_gate==false)
  84. {
  85. System.out.println("远程控门失败,err="+AcsMain.hCNetSDK.NET_DVR_GetLastError());
  86. return;
  87. }
  88. System.out.println("远程控门成功");
  89. return;
  90. }
  91. }