From 0e9a6b6cf0f087776a0e3d75c855c05ab1027880 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=BF=97=E6=88=90?= <15187855430@163.com> Date: Thu, 6 Mar 2025 14:41:29 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/CardReaderServiceImpl.java | 112 ++++++++---------- .../cardReader/utils/CardReaderSdk.java | 97 +++++++-------- 2 files changed, 100 insertions(+), 109 deletions(-) diff --git a/src/main/java/com/dpkj/modules/cardReader/service/impl/CardReaderServiceImpl.java b/src/main/java/com/dpkj/modules/cardReader/service/impl/CardReaderServiceImpl.java index 7ea17ea..65bfef4 100644 --- a/src/main/java/com/dpkj/modules/cardReader/service/impl/CardReaderServiceImpl.java +++ b/src/main/java/com/dpkj/modules/cardReader/service/impl/CardReaderServiceImpl.java @@ -17,10 +17,11 @@ public class CardReaderServiceImpl implements CardReaderService { private CardReaderSdk cardReaderSdk = CardReaderUtil.getCardReaderSDK(); @Value("${IDCardReader.waitingTime}") private Long waitingTime; + private final Object cardReaderLock = new Object(); @Override public Result IDCardReader() { - int handle = 0; + Long handle = null; UserInfoVO userInfo = null; try { log.info("[CardReaderServiceImpl][IDCardReader][26]: 开始连接指定设备与电脑端口,即打开端口"); @@ -32,23 +33,10 @@ public class CardReaderServiceImpl implements CardReaderService { log.info("[CardReaderServiceImpl][IDCardReader][32]: 开始循环读取 ID 卡信息,开始时间: {}", startTime); while (true) { try { - byte[] bytes = new byte[1024]; log.info("[CardReaderServiceImpl][IDCardReader][36]: 尝试读取 ID 卡"); - int idCard = cardReaderSdk.PICC_Reader_ReadIDCard(handle, bytes); + Long idCard = cardReaderSdk.PICC_Reader_ReadIDCard(handle); log.info("[CardReaderServiceImpl][IDCardReader][38]: 读取 ID 卡,返回值: {}", idCard); log.info("[CardReaderServiceImpl][IDCardReader][39]: 尝试创建 UserInfoVO 对象"); - /*byte[] address = new byte[1024]; - Integer i = cardReaderSdk.GetAddress(address); - System.out.println(i); - java.lang.String strAddress = new java.lang.String(address, "GBK"); - System.out.println("地址:" + strAddress);*/ - - /*byte[] bmpFile = new byte[4096]; - int s = cardReaderSdk.GetBmpFileData(bmpFile); - System.out.println(s); - java.lang.String strBmpFile = new java.lang.String(bmpFile, "GBK"); - System.out.println("地址:" + strBmpFile);*/ - userInfo = new UserInfoVO(cardReaderSdk); log.info("[CardReaderServiceImpl][IDCardReader][53]: 创建 UserInfoVO 对象成功,姓名: {}", userInfo.getName()); if (!"".equals(userInfo.getName()) && userInfo.getName() != null) { @@ -78,7 +66,7 @@ public class CardReaderServiceImpl implements CardReaderService { log.info("[CardReaderServiceImpl][IDCardReader][78]: 成功读取到用户信息,返回结果"); return Result.ok(userInfo); } finally { - if (handle != 0) { + if (handle != null) { log.info("[CardReaderServiceImpl][IDCardReader][82]: 开始关闭端口,句柄: {}", handle); // 不管什么情况最终都要关闭端口 cardReaderSdk.ICC_Reader_Close(handle); @@ -89,91 +77,93 @@ public class CardReaderServiceImpl implements CardReaderService { @Override public Result SocialSecurityCardReader() { - int handle = 0; + Long handle = null; try { - log.info("[CardReaderServiceImpl][SocialSecurityCardReader][94]: 开始连接指定设备与电脑端口,即打开端口"); - // 连接指定设备与电脑端口,即打开端口 + log.info("[CardReaderServiceImpl][SocialSecurityCardReader][70]: 开始连接指定设备与电脑端口,即打开端口"); handle = cardReaderSdk.ICC_Reader_Open("USB1"); - log.info("[CardReaderServiceImpl][SocialSecurityCardReader][97]: 连接指定设备与电脑端口,即打开端口,返回句柄: {}", handle); + if (handle != null) { + log.error("[CardReaderServiceImpl][SocialSecurityCardReader][70]: 打开端口失败"); + return Result.error("打开端口失败,请检查设备连接"); + } + log.info("[CardReaderServiceImpl][SocialSecurityCardReader][70]: 连接指定设备与电脑端口,即打开端口,返回句柄: {}", handle); long startTime = System.currentTimeMillis(); - log.info("[CardReaderServiceImpl][SocialSecurityCardReader][100]: 开始循环读取社保卡信息,开始时间: {}", startTime); + log.info("[CardReaderServiceImpl][SocialSecurityCardReader]: 开始循环读取社保卡信息,开始时间: {}", startTime); while (true) { - byte[] data = new byte[1024]; - log.info("[CardReaderServiceImpl][SocialSecurityCardReader][104]: 尝试读取社保卡基本信息"); - int i = cardReaderSdk.iReadCardBas(3, data); - log.info("[CardReaderServiceImpl][SocialSecurityCardReader][106]: 读取社保卡基本信息,返回值: {}", i); - + byte[] data = new byte[4096]; + log.info("[CardReaderServiceImpl][SocialSecurityCardReader]: 尝试读取社保卡基本信息"); + Long i = cardReaderSdk.iReadCardBas(3, data); + log.info("[CardReaderServiceImpl][SocialSecurityCardReader]: 读取社保卡基本信息,返回值: {}", i); if (i == 0) { java.lang.String bas = new java.lang.String(data, "GBK"); java.lang.String[] split = bas.split("\\|"); - log.info("[CardReaderServiceImpl][SocialSecurityCardReader][111]: 读基本信息,结果: {}", bas); - log.info("[CardReaderServiceImpl][SocialSecurityCardReader][112]: 开始分割基本信息"); - log.info("[CardReaderServiceImpl][SocialSecurityCardReader][113]: 基本信息分割完成,分割后的数组长度: {}", split.length); - log.info("[CardReaderServiceImpl][SocialSecurityCardReader][114]: 开始创建 SocialSecurityCardInfoVO 对象"); + log.info("[CardReaderServiceImpl][SocialSecurityCardReader]: 读基本信息,结果: {}", bas); + log.info("[CardReaderServiceImpl][SocialSecurityCardReader]: 开始分割基本信息"); + log.info("[CardReaderServiceImpl][SocialSecurityCardReader]: 基本信息分割完成,分割后的数组长度: {}", split.length); + log.info("[CardReaderServiceImpl][SocialSecurityCardReader]: 开始创建 SocialSecurityCardInfoVO 对象"); SocialSecurityCardInfoVO socialSecurityCardInfoVO = new SocialSecurityCardInfoVO(); - log.info("[CardReaderServiceImpl][SocialSecurityCardReader][116]: 开始截取区号代码"); + log.info("[CardReaderServiceImpl][SocialSecurityCardReader]: 开始截取区号代码"); // 区号代码截取 socialSecurityCardInfoVO.setAreaCode(split[0].substring(split[0].length() - 6)); - log.info("[CardReaderServiceImpl][SocialSecurityCardReader][119]: 区号代码截取完成,结果: {}", socialSecurityCardInfoVO.getAreaCode()); - log.info("[CardReaderServiceImpl][SocialSecurityCardReader][120]: 开始设置社保卡号"); + log.info("[CardReaderServiceImpl][SocialSecurityCardReader]: 区号代码截取完成,结果: {}", socialSecurityCardInfoVO.getAreaCode()); + log.info("[CardReaderServiceImpl][SocialSecurityCardReader]: 开始设置社保卡号"); socialSecurityCardInfoVO.setSocialSecurityNo(split[1]); - log.info("[CardReaderServiceImpl][SocialSecurityCardReader][122]: 社保卡号设置完成,结果: {}", socialSecurityCardInfoVO.getSocialSecurityNo()); - log.info("[CardReaderServiceImpl][SocialSecurityCardReader][123]: 开始设置卡号"); + log.info("[CardReaderServiceImpl][SocialSecurityCardReader]: 社保卡号设置完成,结果: {}", socialSecurityCardInfoVO.getSocialSecurityNo()); + log.info("[CardReaderServiceImpl][SocialSecurityCardReader]: 开始设置卡号"); socialSecurityCardInfoVO.setCardNumber(split[2]); - log.info("[CardReaderServiceImpl][SocialSecurityCardReader][125]: 卡号设置完成,结果: {}", socialSecurityCardInfoVO.getCardNumber()); - log.info("[CardReaderServiceImpl][SocialSecurityCardReader][126]: 开始设置识别码"); + log.info("[CardReaderServiceImpl][SocialSecurityCardReader]: 卡号设置完成,结果: {}", socialSecurityCardInfoVO.getCardNumber()); + log.info("[CardReaderServiceImpl][SocialSecurityCardReader]: 开始设置识别码"); socialSecurityCardInfoVO.setIdentificationCode(split[3]); - log.info("[CardReaderServiceImpl][SocialSecurityCardReader][128]: 识别码设置完成,结果: {}", socialSecurityCardInfoVO.getIdentificationCode()); - log.info("[CardReaderServiceImpl][SocialSecurityCardReader][129]: 开始设置姓名"); + log.info("[CardReaderServiceImpl][SocialSecurityCardReader]: 识别码设置完成,结果: {}", socialSecurityCardInfoVO.getIdentificationCode()); + log.info("[CardReaderServiceImpl][SocialSecurityCardReader]: 开始设置姓名"); socialSecurityCardInfoVO.setName(split[4]); - log.info("[CardReaderServiceImpl][SocialSecurityCardReader][131]: 姓名设置完成,结果: {}", socialSecurityCardInfoVO.getName()); - log.info("[CardReaderServiceImpl][SocialSecurityCardReader][132]: 开始设置卡重置信息"); + log.info("[CardReaderServiceImpl][SocialSecurityCardReader]: 姓名设置完成,结果: {}", socialSecurityCardInfoVO.getName()); + log.info("[CardReaderServiceImpl][SocialSecurityCardReader]: 开始设置卡重置信息"); socialSecurityCardInfoVO.setCardResetInformation(split[5]); - log.info("[CardReaderServiceImpl][SocialSecurityCardReader][134]: 卡重置信息设置完成,结果: {}", socialSecurityCardInfoVO.getCardResetInformation()); - log.info("[CardReaderServiceImpl][SocialSecurityCardReader][135]: 开始设置规格版本"); + log.info("[CardReaderServiceImpl][SocialSecurityCardReader]: 卡重置信息设置完成,结果: {}", socialSecurityCardInfoVO.getCardResetInformation()); + log.info("[CardReaderServiceImpl][SocialSecurityCardReader]: 开始设置规格版本"); socialSecurityCardInfoVO.setSpecificationVersion(split[6]); - log.info("[CardReaderServiceImpl][SocialSecurityCardReader][137]: 规格版本设置完成,结果: {}", socialSecurityCardInfoVO.getSpecificationVersion()); - log.info("[CardReaderServiceImpl][SocialSecurityCardReader][138]: 开始设置发卡日期"); + log.info("[CardReaderServiceImpl][SocialSecurityCardReader]: 规格版本设置完成,结果: {}", socialSecurityCardInfoVO.getSpecificationVersion()); + log.info("[CardReaderServiceImpl][SocialSecurityCardReader]: 开始设置发卡日期"); socialSecurityCardInfoVO.setIssuanceDate(split[7]); - log.info("[CardReaderServiceImpl][SocialSecurityCardReader][140]: 发卡日期设置完成,结果: {}", socialSecurityCardInfoVO.getIssuanceDate()); - log.info("[CardReaderServiceImpl][SocialSecurityCardReader][141]: 开始设置过期日期"); + log.info("[CardReaderServiceImpl][SocialSecurityCardReader]: 发卡日期设置完成,结果: {}", socialSecurityCardInfoVO.getIssuanceDate()); + log.info("[CardReaderServiceImpl][SocialSecurityCardReader]: 开始设置过期日期"); socialSecurityCardInfoVO.setExpireDate(split[8]); - log.info("[CardReaderServiceImpl][SocialSecurityCardReader][143]: 过期日期设置完成,结果: {}", socialSecurityCardInfoVO.getExpireDate()); - log.info("[CardReaderServiceImpl][SocialSecurityCardReader][144]: 开始设置终端号"); + log.info("[CardReaderServiceImpl][SocialSecurityCardReader]: 过期日期设置完成,结果: {}", socialSecurityCardInfoVO.getExpireDate()); + log.info("[CardReaderServiceImpl][SocialSecurityCardReader]: 开始设置终端号"); socialSecurityCardInfoVO.setTerminalNumber(split[9]); - log.info("[CardReaderServiceImpl][SocialSecurityCardReader][146]: 终端号设置完成,结果: {}", socialSecurityCardInfoVO.getTerminalNumber()); - log.info("[CardReaderServiceImpl][SocialSecurityCardReader][147]: 开始设置终端设备号"); + log.info("[CardReaderServiceImpl][SocialSecurityCardReader]: 终端号设置完成,结果: {}", socialSecurityCardInfoVO.getTerminalNumber()); + log.info("[CardReaderServiceImpl][SocialSecurityCardReader]: 开始设置终端设备号"); socialSecurityCardInfoVO.setTerminalDeviceNumber(split[10]); - log.info("[CardReaderServiceImpl][SocialSecurityCardReader][149]: 终端设备号设置完成,结果: {}", socialSecurityCardInfoVO.getTerminalDeviceNumber()); - log.info("[CardReaderServiceImpl][SocialSecurityCardReader][150]: 成功读取社保卡信息,返回结果"); + log.info("[CardReaderServiceImpl][SocialSecurityCardReader]: 终端设备号设置完成,结果: {}", socialSecurityCardInfoVO.getTerminalDeviceNumber()); + log.info("[CardReaderServiceImpl][SocialSecurityCardReader]: 成功读取社保卡信息,返回结果"); return Result.ok(socialSecurityCardInfoVO); } long elapsedTime = System.currentTimeMillis() - startTime; - log.info("[CardReaderServiceImpl][SocialSecurityCardReader][155]: 已过去时间: {} 毫秒", elapsedTime); + log.info("[CardReaderServiceImpl][SocialSecurityCardReader]: 已过去时间: {} 毫秒", elapsedTime); if (elapsedTime >= waitingTime) { - log.info("[CardReaderServiceImpl][SocialSecurityCardReader][157]: 读取社保卡信息超时,等待了 {} 毫秒。", waitingTime); + log.info("[CardReaderServiceImpl][SocialSecurityCardReader]: 读取社保卡信息超时,等待了 {} 毫秒。", waitingTime); return Result.error("读取社保卡信息超时,请重试。"); } try { - log.info("[CardReaderServiceImpl][SocialSecurityCardReader][162]: 线程休眠 100 毫秒,避免 CPU 空转"); + log.info("[CardReaderServiceImpl][SocialSecurityCardReader]: 线程休眠 100 毫秒,避免 CPU 空转"); // 短暂休眠,避免 CPU 空转 Thread.sleep(100); } catch (InterruptedException e) { - log.info("[CardReaderServiceImpl][SocialSecurityCardReader][166]: 线程休眠被中断,重新设置中断状态"); + log.info("[CardReaderServiceImpl][SocialSecurityCardReader]: 线程休眠被中断,重新设置中断状态"); Thread.currentThread().interrupt(); } } } catch (Exception e) { - log.info("[CardReaderServiceImpl][SocialSecurityCardReader][171]: Error occurred during card reader operation: ", e); - if (handle != 0) { - log.info("[CardReaderServiceImpl][SocialSecurityCardReader][173]: 开始关闭端口,句柄: {}", handle); + log.info("[CardReaderServiceImpl][SocialSecurityCardReader]: Error occurred during card reader operation: ", e); + if (handle != null) { + log.info("[CardReaderServiceImpl][SocialSecurityCardReader]: 开始关闭端口,句柄: {}", handle); // 关闭端口 cardReaderSdk.ICC_Reader_Close(handle); - log.info("[CardReaderServiceImpl][SocialSecurityCardReader][176]: 端口关闭成功"); + log.info("[CardReaderServiceImpl][SocialSecurityCardReader]: 端口关闭成功"); } return Result.error("操作失败:" + e.getMessage()); } diff --git a/src/main/java/com/dpkj/modules/cardReader/utils/CardReaderSdk.java b/src/main/java/com/dpkj/modules/cardReader/utils/CardReaderSdk.java index e5bc6d4..2c3cbed 100644 --- a/src/main/java/com/dpkj/modules/cardReader/utils/CardReaderSdk.java +++ b/src/main/java/com/dpkj/modules/cardReader/utils/CardReaderSdk.java @@ -14,7 +14,7 @@ public interface CardReaderSdk extends Library { * @param devName 接口名称,如”USB1” * @return >0成功,<=0失败 */ - int ICC_Reader_Open(String devName); + Long ICC_Reader_Open(String devName); /** @@ -23,7 +23,7 @@ public interface CardReaderSdk extends Library { * @param ReaderHandle ICCReaderOpen函数所返回的值 * @return =0成功,非0失败 */ - int ICC_Reader_Close(int ReaderHandle); + Long ICC_Reader_Close(Long ReaderHandle); /** @@ -33,7 +33,7 @@ public interface CardReaderSdk extends Library { * @param time 蜂鸣时间,以毫秒为单位 * @return =0成功,非0失败 */ - int ICC_PosBeep(int ReaderHandle, int time); + Long ICC_PosBeep(Long ReaderHandle, int time); /** @@ -41,7 +41,7 @@ public interface CardReaderSdk extends Library { * * @return 设备及动态库版本信息 =0成功,非0失败 */ - int ICC_Reader_Libinfo(); + Long ICC_Reader_Libinfo(); /** @@ -52,7 +52,7 @@ public interface CardReaderSdk extends Library { * @param length 要读取的数据的长度 * @return 读取的数据 =0成功,非0失败 */ - int ICC_Reader_ReadEEPROM(int ReaderHandle, int offset, int length); + Long ICC_Reader_ReadEEPROM(Long ReaderHandle, int offset, int length); /** @@ -64,7 +64,7 @@ public interface CardReaderSdk extends Library { * @param buffer 待写入的数据 * @return =0成功,非0失败 */ - int ICC_Reader_WriteEEPROM(int ReaderHandle, int offset, int length, String buffer); + Long ICC_Reader_WriteEEPROM(Long ReaderHandle, int offset, int length, String buffer); /** @@ -89,7 +89,7 @@ public interface CardReaderSdk extends Library { * @return =0成功,非0失败 */ @Deprecated - int ICC_Reader_DispSound(int ReaderHandle, String voiceType); + Long ICC_Reader_DispSound(Long ReaderHandle, String voiceType); /** @@ -105,7 +105,7 @@ public interface CardReaderSdk extends Library { * 0x3x:非接CPU卡 * @return 上电返回ATR值,数据格式为十六进制字符串 */ - int ICC_Reader_PowerOnHEX(int ReaderHandle, String ICCSlotNo); + Long ICC_Reader_PowerOnHEX(Long ReaderHandle, String ICCSlotNo); /** @@ -121,7 +121,7 @@ public interface CardReaderSdk extends Library { * 0x3x:非接CPU卡 * @return =0成功,非0失败 */ - int ICC_Reader_PowerOff(int ReaderHandle, String ICCSlotNo); + Long ICC_Reader_PowerOff(Long ReaderHandle, String ICCSlotNo); /** @@ -137,7 +137,7 @@ public interface CardReaderSdk extends Library { * 0x3x:非接CPU卡 * @return = 0 表示卡座有卡,其他见状态码 */ - int ICC_Reader_GetStatus(int ReaderHandle, String ICCSlotNo); + Long ICC_Reader_GetStatus(Long ReaderHandle, String ICCSlotNo); /** @@ -154,7 +154,7 @@ public interface CardReaderSdk extends Library { * @param CommandAPDU APDU命令数据,以十六进制字符串形式输入 * @return 大于 0 表示执行成功,其值为 Response_APDU 的数据长度.否则表示执行失败 */ - int ICC_Reader_ApplicationHEX(int ReaderHandle, String ICCSlotNo, String CommandAPDU); + Long ICC_Reader_ApplicationHEX(Long ReaderHandle, String ICCSlotNo, String CommandAPDU); /** @@ -163,7 +163,7 @@ public interface CardReaderSdk extends Library { * @param ReaderHandle ICCReaderOpen函数所返回的值 * @return 返回卡片上电信息 = 0 表示成功,非0失败 */ - int ICC_Reader_4428_PowerOnHEX(int ReaderHandle); + Long ICC_Reader_4428_PowerOnHEX(Long ReaderHandle); /** @@ -172,7 +172,7 @@ public interface CardReaderSdk extends Library { * @param ReaderHandle ICCReaderOpen函数所返回的值 * @return = 0 表示成功,非0失败 */ - int ICC_Reader_4442_PowerOff(int ReaderHandle); + Long ICC_Reader_4442_PowerOff(Long ReaderHandle); /** @@ -183,7 +183,7 @@ public interface CardReaderSdk extends Library { * @param len 数据长度,offset+len需小于256 * @return 返回卡片读取信息 = 0 表示成功,非0失败 */ - int ICC_Reader_4428_ReadHEX(int ReaderHandle, int offset, int len); + Long ICC_Reader_4428_ReadHEX(Long ReaderHandle, int offset, int len); /** @@ -195,7 +195,7 @@ public interface CardReaderSdk extends Library { * @param data 待写入卡片数据 * @return 返回卡片读取信息 = 0 表示成功,非0失败 */ - int ICC_Reader_4428_WriteHEX(int ReaderHandle, int offset, int len, String data); + Long ICC_Reader_4428_WriteHEX(Long ReaderHandle, int offset, int len, String data); /** @@ -205,7 +205,7 @@ public interface CardReaderSdk extends Library { * @param keyHex 卡密钥 * @return = 0 表示成功,非0失败 */ - int ICC_Reader_4442_Verify(int ReaderHandle, String keyHex); + Long ICC_Reader_4442_Verify(Long ReaderHandle, String keyHex); /** ----- 非接触操作函数 -------------- */ /** @@ -214,7 +214,7 @@ public interface CardReaderSdk extends Library { * @param ReaderHandle ICCReaderOpen函数所返回的值 * @return = 0 表示成功,非0失败 */ - int PICC_Reader_Request(int ReaderHandle); + Long PICC_Reader_Request(Long ReaderHandle); /** @@ -224,7 +224,7 @@ public interface CardReaderSdk extends Library { * @param flag 00-关场强 01-开场强 * @return = 0 表示成功,非0失败 */ - int PICC_Reader_RFControl(int ReaderHandle, String flag); + Long PICC_Reader_RFControl(Long ReaderHandle, String flag); /** --------------- 非接 CPU 卡操作函数 ------------ */ @@ -235,7 +235,7 @@ public interface CardReaderSdk extends Library { * @return 输出上电成功返回的卡片复位信息(ATS) 返回ATS长度,大于0 表示成功,其他失败 */ @Deprecated - int PICC_Reader_PowerOnTypeAHEX(int ReaderHandle); + Long PICC_Reader_PowerOnTypeAHEX(Long ReaderHandle); /** @@ -245,7 +245,7 @@ public interface CardReaderSdk extends Library { * @return 输出上电成功返回的卡片复位信息(ATS) 返回ATS长度,大于0 表示成功,其他失败 */ @Deprecated - int PICC_Reader_PowerOnTypeBHEX(int ReaderHandle); + Long PICC_Reader_PowerOnTypeBHEX(Long ReaderHandle); /** * 非接触 CPU 卡执行APDU命令,命令以十六进制字符串传输(SSSE32.dll暴露函数中未发现该函数,但是文档中有) @@ -256,7 +256,7 @@ public interface CardReaderSdk extends Library { * 大于 0 表示执行成功,其值为 Response_APDU 的数据长度.否则表示执行失败 */ @Deprecated - int PICC_Reader_ApplicationHEX(int ReaderHandle, String CommandAPDU); + Long PICC_Reader_ApplicationHEX(Long ReaderHandle, String CommandAPDU); /** ---------------- 二代证/外国人居留证/港澳台居住证 --------------- */ @@ -266,7 +266,7 @@ public interface CardReaderSdk extends Library { * @param ReaderHandle ICCReaderOpen函数所返回的值 * @return 返回身份证物理ID信息 = 0 表示成功,非0失败 */ - int PICC_Reader_Read_CardID(int ReaderHandle, byte[] response); + Long PICC_Reader_Read_CardID(Long ReaderHandle, byte[] response); /** @@ -275,7 +275,8 @@ public interface CardReaderSdk extends Library { * @param ReaderHandle ICCReaderOpen函数所返回的值 * @return 返回错误信息 = 0 表示成功,非0失败 */ - int PICC_Reader_ReadIDCard(int ReaderHandle, byte[] response); + Long PICC_Reader_ReadIDCard(Long ReaderHandle); + // int PICC_Reader_ReadIDCard(Long ReaderHandle, byte[] response); /** 以下函数须在 “PICC_Reader_ReadIDCard” 函数执行成功之后调用,否则获取不到有效信息 */ /** @@ -286,99 +287,99 @@ public interface CardReaderSdk extends Library { * 2:港澳台居民居住证 * 4:新外国人永久居留证 */ - int GetCardType(); + Integer GetCardType(); /** * 姓名(类型为 1 时表示:外国人中文姓名) */ - int GetName(byte[] outParam); + Integer GetName(byte[] outParam); /** * 性别 */ - int GetSex(byte[] outParam); + Integer GetSex(byte[] outParam); /** * 民族 */ - int GetNation(byte[] outParam); + Integer GetNation(byte[] outParam); /** * 出生日期 */ - int GetBirth(byte[] outParam); + Integer GetBirth(byte[] outParam); /** * 住址 */ - int GetAddress(byte[] outParam); + Integer GetAddress(byte[] outParam); /** * 公民身份证号码(类型为 1时表示:外国人居留证号码) */ - int GetCertNo(byte[] outParam); + Integer GetCertNo(byte[] outParam); /** * 签发机关 */ - int GetDepartemt(byte[] outParam); + Integer GetDepartemt(byte[] outParam); /** * 有效起始日期 */ - int GetEffectDate(byte[] outParam); + Integer GetEffectDate(byte[] outParam); /** * 有效截止日期 */ - int GetExpireDate(byte[] outParam); + Integer GetExpireDate(byte[] outParam); /** * bmp 格式照片数据 */ - int GetBmpFileData(byte[] outParam); + Integer GetBmpFileData(byte[] outParam); /** * 生成照片 * TODO 入参参考文中3.4.1 */ - int GetBmpFile(byte[] outParam); + Integer GetBmpFile(byte[] outParam); /** * 是否含存在指纹信息:存在时返回 512 或者 1024 * 不存在时返回 0 */ - int IsFingerExist(); + Integer IsFingerExist(); /** * 获取指纹数据:成功时返回获取到的字节长度 */ - int GetFingerprint(byte[] outParam); + Integer GetFingerprint(byte[] outParam); /** * 外国人英文姓名 */ - int GetEnName(byte[] outParam); + Integer GetEnName(byte[] outParam); /** * 外国人国籍代码,符合GB/T2659-2000规定 */ - int GetNationalityCode(byte[] outParam); + Integer GetNationalityCode(byte[] outParam); /** * 港澳台通行证号码 */ - int GetTXZHM(byte[] outParam); + Integer GetTXZHM(byte[] outParam); /** * 港澳台通行证签发次数 */ - int GetTXZQFCS(byte[] outParam); + Integer GetTXZQFCS(byte[] outParam); /** * 外国人换证次数 */ - int GetHZCS(byte[] outParam); + Integer GetHZCS(byte[] outParam); /** ------------ 社保卡 ---------*/ /** @@ -391,7 +392,7 @@ public interface CardReaderSdk extends Library { * 4-自动寻卡,非接触式操作卡优先 * @return */ - int iReadCardBas(int iType, byte[] data); + Long iReadCardBas(int iType, byte[] data); /** * 基于加密机的读基本信息(步骤一) @@ -404,7 +405,7 @@ public interface CardReaderSdk extends Library { * 4-自动寻卡,非接触式操作卡优先 * @return */ - int iReadCardBas_HSM_Step1(int iType, byte[] data); + Long iReadCardBas_HSM_Step1(int iType, byte[] data); /** * 基于加密机的读基本信息(步骤二) @@ -416,7 +417,7 @@ public interface CardReaderSdk extends Library { * 原始信息(16 位)拼接组成)。各数据项之间以“|”分割,且最后一个数据项以“|”结尾。 * @return */ - public int iReadCardBas_HSM_Step2(byte[] pKey, byte[] pOutInfo); + public Long iReadCardBas_HSM_Step2(byte[] pKey, byte[] pOutInfo); public static class GetLibraryPath_Helper { public GetLibraryPath_Helper() { @@ -436,7 +437,7 @@ public interface CardReaderSdk extends Library { //社保卡 - public int PICC_Reader_SSCardInfo1(int ReaderHandle, + public int PICC_Reader_SSCardInfo1(Long ReaderHandle, byte[] SBKH, byte[] SHBZHM, byte[] XM, @@ -446,7 +447,7 @@ public interface CardReaderSdk extends Library { ); //身份证 - public int PICC_Reader_ReadIDInfo(int ReaderHandle, + public int PICC_Reader_ReadIDInfo(Long ReaderHandle, String filepath, byte[] pName, byte[] pSex, @@ -459,7 +460,7 @@ public interface CardReaderSdk extends Library { byte[] pExpire, byte[] pErrMsg); - public int ICC_SelscetScan(int ReaderHandle, byte[] pCodeInfo , int [] lent); + public int ICC_SelscetScan(Long ReaderHandle, byte[] pCodeInfo , int [] lent); public int iGetDevUID(byte[] pOutInfo);