//package com.shxy.xyhkcamera.ascest; // // //import com.shxy.xyhkcamera.hk.HCNetSDK; //import com.sun.jna.ptr.IntByReference; // ///** // * 卡管理,以人为中心,要先下发工号,卡号要关联在人员工号上 // */ //public final class CardManage { // // //// /** //// * 下发卡号, //// * @param userID 用户注册ID //// * @param cardNo 卡号 //// */ //// public static void addCardInfo(int userID,String cardNo) { //// HCNetSDK.BYTE_ARRAY ptrByteArray = new HCNetSDK.BYTE_ARRAY(1024); //数组 //// String strInBuffer = "POST /ISAPI/AccessControl/CardInfo/Record?format=json"; //// System.arraycopy(strInBuffer.getBytes(), 0, ptrByteArray.byValue, 0, strInBuffer.length());//字符串拷贝到数组中 //// ptrByteArray.write(); //// //// int lHandler = AcsMain.hCNetSDK.NET_DVR_StartRemoteConfig(userID, HCNetSDK.NET_DVR_JSON_CONFIG, ptrByteArray.getPointer(), strInBuffer.length(), null, null); //// if (lHandler < 0) //// { //// System.out.println("AddCardInfo NET_DVR_StartRemoteConfig 失败,错误码为"+AcsMain.hCNetSDK.NET_DVR_GetLastError()); //// return; //// } //// else{ //// System.out.println("AddCardInfo NET_DVR_StartRemoteConfig 成功!"); //// HCNetSDK.BYTE_ARRAY lpInput = new HCNetSDK.BYTE_ARRAY(1024); //数组 //// String strJsonData = "{\n" + //// " \"CardInfo\" : {\n" + //// " \"employeeNo\":\"ceshi1\", \n" + //// " \"cardNo\":\""+cardNo+"\", \n" + //// " \"cardType\":\"normalCard\"\n" + //// " } \n" + //// "}"; //// System.arraycopy(strJsonData.getBytes(), 0, lpInput.byValue, 0, strJsonData.length());//字符串拷贝到数组中 //// lpInput.write(); //// HCNetSDK.BYTE_ARRAY ptrOutuff = new HCNetSDK.BYTE_ARRAY(1024); //// IntByReference pInt = new IntByReference(0); //// while(true){ //// /* //// 如果需要批量下发,循环调用NET_DVR_SendWithRecvRemoteConfig接口进行下发不同的卡号,下发结束完成后关闭下发卡号长连接 //// */ //// int dwState = AcsMain.hCNetSDK.NET_DVR_SendWithRecvRemoteConfig(lHandler, lpInput.getPointer(), lpInput.byValue.length ,ptrOutuff.getPointer(), 1024, pInt); //// //读取返回的json并解析 //// ptrOutuff.read(); //// String strResult = new String(ptrOutuff.byValue).trim(); //// System.out.println("dwState:" + dwState + ",strResult:" + strResult); //// //// JSONObject jsonResult = new JSONObject(strResult); //// int statusCode = jsonResult.getInt("statusCode"); //// String statusString = jsonResult.getString("statusString"); //// //// if(dwState == -1){ //// System.out.println("NET_DVR_SendWithRecvRemoteConfig接口调用失败,错误码:" + AcsMain.hCNetSDK.NET_DVR_GetLastError()); //// break; //// } //// else if(dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_NEED_WAIT) //// { //// System.out.println("配置等待"); //// try { //// Thread.sleep(10); //// } catch (InterruptedException e) { //// e.printStackTrace(); //// } //// continue; //// } //// else if(dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_FAILED) //// { //// System.out.println("下发卡号失败, json retun:" + jsonResult.toString()); //// break; //// } //// else if(dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_EXCEPTION) //// { //// System.out.println("下发卡号异常, json retun:" + jsonResult.toString()); //// break; //// } //// else if(dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_SUCCESS) //// { //// if (statusCode != 1){ //// System.out.println("下发卡号成功,但是有异常情况:" + jsonResult.toString()); //// } //// else{ //// System.out.println("下发卡号成功, json retun:" + jsonResult.toString()); //// } //// break; //// } //// else if(dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_FINISH) { //// //// System.out.println("下发卡号完成"); //// break; //// } //// } //// if(!AcsMain.hCNetSDK.NET_DVR_StopRemoteConfig(lHandler)){ //// System.out.println("NET_DVR_StopRemoteConfig接口调用失败,错误码:" + AcsMain.hCNetSDK.NET_DVR_GetLastError()); //// } //// else{ //// System.out.println("NET_DVR_StopRemoteConfig接口成功"); //// } //// } //// } // // // /** // * 按照人员工号查询卡号 // * @param userID // * @param employeeNo // */ // public static void searchCardInfo(int userID, String employeeNo) // { // String searchCardInfoUrl="POST /ISAPI/AccessControl/CardInfo/Search?format=json"; // String searchCardInfojson="{\n" + // " \"CardInfoSearchCond\": {\n" + // " \"searchID\": \"20201014001\",\n" + // " \"searchResultPosition\": 0,\n" + // " \"maxResults\": 30,\n" + // " \"EmployeeNoList\" : [\n" + // " {\n" + // " \"employeeNo\": \""+employeeNo+"\"\n" + // " }\n" + // " ]\n" + // " }\n" + // "}"; // String result= TransIsapi.put_isapi(userID,searchCardInfoUrl,searchCardInfojson); // System.out.println(result); // // } // // /** // * 查询所有卡号 // * @param userID // */ // public static void searchAllCardInfo(int userID) // { // String searchCardInfoUrl="POST /ISAPI/AccessControl/CardInfo/Search?format=json"; // /* // "searchID": "", //必填,搜索记录唯一标识,用来确认上层客户端是否为同一个(倘若是同一个,设备记录内存, // 下次搜索加快速度),string类型 // "searchResultPosition": 0, //必填,查询结果在结果列表中的起始位置,integer32类型;当记录条数很多时, // 一次查询不能获取所有的记录,下一次查询时指定位置可以查询后面的记录 // "maxResults": 30, //必填,本次协议调用可获取的最大记录数,integer32类型(如maxResults值大于设备能力集返回的范围, // 则设备按照能力集最大值返回,设备不进行报错 // */ // String searchCardInfojson="{\n" + // " \"CardInfoSearchCond\": {\n" + // " \"searchID\": \"20211129001\",\n" + // " \"searchResultPosition\": 0,\n" + // " \"maxResults\": 30\n" + // " }\n" + // "}"; // String result= com.shxy.xyhkcamera.asc.TransIsapi.put_isapi(userID,searchCardInfoUrl,searchCardInfojson); // System.out.println(result); // } // // // /** // * 根据工号删除卡号, // * @param userID // * @param employeeNo // */ // public static void deleteCardInfo(int userID,String employeeNo ) // { // String deleteCardInfoURL="PUT /ISAPI/AccessControl/CardInfo/Delete?format=json "; // String deleteCardInfojson="{\n" + // " \"CardInfoDelCond\" : {\n" + // " \"EmployeeNoList\" : [ \n" + // " {\n" + // " \"employeeNo\": \""+employeeNo+"\" \n" + // " }\n" + // " ]\n" + // " }\n" + // "}\n"; // String result= com.shxy.xyhkcamera.asc.TransIsapi.put_isapi(userID,deleteCardInfoURL,deleteCardInfojson); // System.out.println(result); // } // // // /** // * 删除全部卡号信息, // * @param userID // */ // public static void deleteAllCardInfo(int userID) // { // String deleteAllCardInfoURL="PUT /ISAPI/AccessControl/CardInfo/Delete?format=json"; // String deleteAllCardInfoJson="{\"CardInfoDelCond\" : {}}"; // /* // 如果涉及大批量卡号删除,设备需要一定的时间去处理,需要将超时时间设置成60s,put_isapi中的NET_DVR_XML_CONFIG_INPUT中dwRecvTimeOut // 参数设置成60000 // */ // String result= com.shxy.xyhkcamera.asc.TransIsapi.put_isapi(userID,deleteAllCardInfoURL,deleteAllCardInfoJson); // System.out.println(result); // } //// //// //// /** //// * 获取所有卡数量 //// * @param userID //// * @return //// */ //// public static int getAllCardNumber(int userID) { //// String getAllCardNumberUrl="GET /ISAPI/AccessControl/CardInfo/Count?format=json"; //// String result= com.shxy.xyhkcamera.asc.TransIsapi.get_isapi(userID,getAllCardNumberUrl); //// System.out.println(result); //// JSONObject jsonObject=new JSONObject(result); //// int num=jsonObject.optJSONObject("CardInfoCount").getInt("cardNumber"); //// return num; //// } // // // //}