|
- package com.hkversion.Acs;
-
-
- import com.hkversion.HCNetSDK;
- import com.sun.jna.ptr.IntByReference;
-
- /**
- * 门禁设备管理:
- * 1、获取(设置)门禁主机参数
- * 2、获取门禁主机工作状态
- */
- public final class ACSManage {
-
- /**
- * 获取(设置)门禁主机参数
- *
- * @param lUserID 用户登录句柄
- */
- public static void acsCfg(int lUserID) {
-
- /**获取门禁主机参数*/
- HCNetSDK.NET_DVR_ACS_CFG struAcsCfg = new HCNetSDK.NET_DVR_ACS_CFG();
- struAcsCfg.dwSize = struAcsCfg.size();
- struAcsCfg.write();
- IntByReference intByReference = new IntByReference(0);
- boolean b_GetAcsCfg = AcsMain.hCNetSDK.NET_DVR_GetDVRConfig(lUserID, HCNetSDK.NET_DVR_GET_ACS_CFG, 0xFFFFFFFF, struAcsCfg.getPointer(),
- struAcsCfg.size(), intByReference);
- if (b_GetAcsCfg = false) {
- System.out.println("获取门禁主机参数,错误码为" + AcsMain.hCNetSDK.NET_DVR_GetLastError());
- return;
- } else {
- System.out.println("获取门禁主机参数成功");
- struAcsCfg.read();
- System.out.println("1.是否显示抓拍图片:" + struAcsCfg.byShowCapPic + "\n"); //是否显示抓拍图片, 0-不显示,1-显示
- System.out.println("2.是否显示卡号:" + struAcsCfg.byShowCardNo + "\n"); //是否显示卡号,0-不显示,1-显示
- System.out.println("3.是否开启语音提示:" + struAcsCfg.byVoicePrompt + "\n"); //是否启用语音提示,0-不启用,1-启用
- System.out.println("4.联动抓图是否上传:" + struAcsCfg.byUploadCapPic + "\n"); //联动抓拍是否上传图片,0-不上传,1-上传
- }
-
- /**设置门禁主机参数*/
- struAcsCfg.byShowCardNo = 1; //开启显示卡号
- struAcsCfg.byVoicePrompt = 0; //关闭语音提示
- struAcsCfg.byUploadCapPic = 1; //开启联动抓图后,设备上抓拍的图片才会通过报警布防上传,否则没有不上传
- struAcsCfg.byShowCapPic = 1;
- struAcsCfg.write();
- boolean b_SetAcsCfg = AcsMain.hCNetSDK.NET_DVR_SetDVRConfig(lUserID, HCNetSDK.NET_DVR_SET_ACS_CFG, 0xFFFFFFFF, struAcsCfg.getPointer(), struAcsCfg.size());
- if (b_SetAcsCfg = false) {
- System.out.println("设置门禁主机参数,错误码为:" + AcsMain.hCNetSDK.NET_DVR_GetLastError());
- return;
- } else {
- System.out.println("设置门禁主机参数成功!!!");
- }
- }
-
- /**
- * 获取门禁主机工作状态
- *
- * @param lUserID 用户登录句柄
- */
- public static void getAcsStatus(int lUserID){
- HCNetSDK.NET_DVR_ACS_WORK_STATUS_V50 netDvrAcsWorkStatusV50 = new HCNetSDK.NET_DVR_ACS_WORK_STATUS_V50();
- netDvrAcsWorkStatusV50.dwSize = netDvrAcsWorkStatusV50.size();
- netDvrAcsWorkStatusV50.write();
- IntByReference intByReference = new IntByReference(0);
- boolean b_GetAcsStatus = AcsMain.hCNetSDK.NET_DVR_GetDVRConfig(lUserID, HCNetSDK.NET_DVR_GET_ACS_WORK_STATUS_V50, 0xFFFFFFFF, netDvrAcsWorkStatusV50.getPointer(),
- netDvrAcsWorkStatusV50.size(), intByReference);
- if (b_GetAcsStatus = false) {
- System.out.println("获取门禁主机工作状态,错误码为:" + AcsMain.hCNetSDK.NET_DVR_GetLastError());
- return;
- } else {
- System.out.println("获取门禁主机工作状态成功!!!");
- netDvrAcsWorkStatusV50.read();
- System.out.println("1.门锁状态(或者梯控的继电器开合状态):" + netDvrAcsWorkStatusV50.byDoorLockStatus[0] + "\n"); //门锁状态:0- 正常关,1- 正常开,2- 短路报警,3- 断路报警,4- 异常报警
- System.out.println("2.门状态(或者梯控的楼层状态):" + netDvrAcsWorkStatusV50.byDoorStatus[0] + "\n"); //门状态(或者梯控的楼层状态):1- 休眠,2- 常开状态(对于梯控,表示自由状态),3- 常闭状态(对于梯控,表示禁用状态),4- 普通状态(对于梯控,表示受控状态)
- System.out.println("3.门磁状态:" + netDvrAcsWorkStatusV50.byMagneticStatus[0] + "\n"); //门磁状态,0-正常关,1-正常开,2-短路报警,3-断路报警,4-异常报警
- System.out.println("4.事件报警输入状态:" + netDvrAcsWorkStatusV50.byCaseStatus[0] + "\n"); //事件报警输入状态:0- 无输入,1- 有输入
- }
- }
-
- /**
- * 远程控门
- * @param userID
- */
- public static void remoteControlGate(int userID)
- {
- /**第二个参数lGatewayIndex
- [in] 门禁序号(楼层编号、锁ID),从1开始,-1表示对所有门(或者梯控的所有楼层)进行操作
- 第三个参数dwStaic
- [in] 命令值:0- 关闭(对于梯控,表示受控),1- 打开(对于梯控,表示开门),2- 常开(对于梯控,表示自由、通道状态),3- 常关(对于梯控,表示禁用),4- 恢复(梯控,普通状态),5- 访客呼梯(梯控),6- 住户呼梯(梯控)*/
- boolean b_gate=AcsMain.hCNetSDK.NET_DVR_ControlGateway(userID,1,1);
- if (b_gate==false)
- {
- System.out.println("远程控门失败,err="+AcsMain.hCNetSDK.NET_DVR_GetLastError());
- return;
- }
- System.out.println("远程控门成功");
- return;
- }
- }
|