1.简单讲对NFC读卡的认识:

读卡器ACR122,是由香港acs开发的一款NFC取卡器,分为接触式和非接触式两种

CPU卡:读取的CPU卡文件结构是由MF根目录其中包括秘钥文件,持卡人基本数据文件,目录数据文件以及秘钥文件DF01下的个个子文件构成

2.一般对硬件的访问是由4个过程组成open,init,read(write),close,但是JAVA 包 javax.smartcardio做了封装,我们只需要进行指令的输入和输出即可。

3.代码:

public ResponseAPDU exec(CardChannel ca, CommandAPDU command) {

ResponseAPDU responseAPDU = null;

try {

TerminalFactory factory = TerminalFactory.getDefault();// 得到一个默认的读卡器工场

CardTerminal cardTerminal = factory.terminals().getTerminal("ACS ACR122 0");// 从工厂获得插在电脑上的读卡器列表,get读卡器列表

cardTerminal.waitForCardPresent(0L);// 等待放置卡片

Card card = cardTerminal.connect("*");// 连接卡片

cardChannel = card.getBasicChannel();// 打开通道

responseAPDU = cardChannel.transmit(command);

} catch (CardException e) {

e.printStackTrace();

}

return responseAPDU;

}

解释一下:

其中CardChannel为卡的执行实例,CommandAPDU是有关的指令。

详见:https://docs.oracle.com/javase/6/docs/jre/api/security/smartcardio/spec/javax/smartcardio/CommandAPDU.html

解释一下这几个参数嗾使什么:

CPU卡的命令报文基本分头和体,其中head中包括CLA(长度1个byte),INS(长度1个byte),P1(参数1,长度1byte),P2(参数2,长度1个byte)

命令体 命令体中各项是可选的。

Lc 命令数据域中 DATA 的长度,该长度不可超过 255 字节。

Data 命令和响应中的数据域 Le 响应数据域中期望数据的长度。

Le=00,表示需要最大字节数, 该长度不可超过 255 字节。

XX ⇒ 1 个字节 16 进制数

XXXX ⇒ 2 个字节 16 进制数

XX...XX ⇒ 未知个字节 16 进制数

好了,知道了这些就可以构造命令进行读卡了

首先,来一个简单操作

byte[] paramData = new byte[]{0x3F, 0x00};//DATA

CommandAPDU selecMF = new CommandAPDU(0x00, 0xA4, 0x00, 0x00, paramData, 0x2);//0X02(Lc)

上面这个实例是读卡的指针指向MF根路径,相当于我们Windows选择了MF文件夹一样

查看返回结果

if (!Integer.toHexString(selectMFResp.getSW()).equals("9000")) {

logger.error("Select 1001 response:{}", selectMFResp.toString());

cardChannel.close();

return null;

}

返回结果9000,是执行成功,我们的命令执行成功了,

ResponseAPDU.getData()获得返回数据,返回的数据是字节数组,需要转换成16进制的String进行读取。

图显示部分返回码的含义:

好了今天就写这么多,下次再详细研究

java读取nfc数据_JAVA有关NFC读卡器读取数据相关推荐

  1. java list 重复数据_java 查找list中重复数据实例详解

    java 查找list中重复数据实例详解 需求: 查找一个List集合中所有重复的数据,重复的数据可能不止一堆,比如:aa, bb, aa, bb, cc , dd, aa这样的数据.如果有重复数据, ...

  2. java 找出重复的数据_java 查找list中重复数据实例详解

    java 查找list中重复数据实例详解 需求: 查找一个list集合中所有重复的数据,重复的数据可能不止一堆,比如:aa, bb, aa, bb, cc , dd, aa这样的数据.如果有重复数据, ...

  3. java读取word表格中的数据_JAVA获取word表格中数据的方案

    上一个项目的开发中需要实现从word中读取表格数据的功能,在JAVA社区搜索了很多资料,终于找到了两个相对最佳的方案,因为也得到了不少网友们的帮助,所以不敢独自享用,在此做一个分享. 两个方案分别是: ...

  4. java file数组 初始化_java从文件中读取数据并赋值给数组

    从txt文件中读取数据赋值给一维数组 字节流读入字节数组中 字节数组转化为字符串 字符创解析为字符串数组 字符串数组转化为数值,并赋值为数组 文本文件是以字节的形式储存的. 在txt文件中一个数字或者 ...

  5. java excel data 导入数据_java实现导入导出excel数据

    项目需要,要实现一个导入导出excel的功能,于是,任务驱动着我学习到了POI和JXL这2个java操作Excel的插件. 一.POI和JXL介绍 1.POI:是对所有office资源进行读写的一套工 ...

  6. java 读取1m文件_java的FileInputStream类读取文件

    package net.csdn.InputStream; import java.io.File; import java.io.FileInputStream; import java.io.Fi ...

  7. java 读excel 流_Java中使用POI读取大的Excel文件或者输入流时发生out of memory异常参考解决方案...

    原文:https://www.cnblogs.com/cksvsaaa/p/7280261.html 注意:此参考解决方案只是针对xlsx格式的excel文件! 背景 前一段时间遇到一种情况,服务器经 ...

  8. java读取excel2010文件_java的poi技术读取Excel[2003-2007,2010]

    这篇blog主要是讲述java中poi读取excel,而excel的版本包括:2003-2007和2010两个版本, 即excel的后缀名为:xls和xlsx. 你也可以在 : 下面是本文的项目结构: ...

  9. java json解析 代码_Java构造和解析Json数据的两种方法详解一

    在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...

  10. java 两个数组去重复数据_Java实现数组去除重复数据的方法详解

    本文实例讲述了Java实现数组去除重复数据的方法.分享给大家供大家参考,具体如下: 前一段时间被面试问到:如果一个数组中有重复元素,用什么方法可以去重?一时间会想到用一种方法,但是后来查阅资料后发现, ...

最新文章

  1. 计算机文化基础案例教程第三版答案,计算机文化基础案例教程(第3版 谭宁)教学课件 素材.zip-排骨做法.doc...
  2. REST中的PUT与POST
  3. Salesforce中所有常用类型字段的取值与赋值
  4. 上下文保存 中断_Linux性能优化(CPU篇)(5)——CPU的上下文切换有几种类型?什么是进程上下文切换?...
  5. mysql的使用优化问题吗_如何对 mysql 进行优化的问题
  6. CentOS 6.0正式版终于发布
  7. Flex-iframe在SWF中嵌入网页的组件(推荐)
  8. 【毕业设计】jsp+sql毕业选题系统(论文)
  9. java实现 mysql导入_怎么用java实现mysql数据库的导入导出
  10. Android9.0 setStereoVolume左右声道流程(二十四)
  11. (解决MATLAB的使用问题)避免每次双击.m文件都会自动打开一个matlab程序
  12. 基于pytorch的transE代码详解
  13. DEA的简单介绍以及Matlab做题例子
  14. 动作识别0-02:mmaction2(SlowFast)-官方数据训练测试-ucf101
  15. 【流量池】裂变营销:10种人脉裂变技能,6个裂变核心,8个吸粉人性本能怎样玩粉丝裂变?
  16. 用C#写经理评分系统
  17. word中二级标题随一级标题自动编号
  18. linux光盘游戏,Linux下五个好玩的即时战略游戏
  19. 2003计算机应用基础题答案,计算机应用基础(Windows_XP+Office_2003)课后题答案
  20. C函数中返回字符数组

热门文章

  1. GD32F103基础教程—注意事项(三)
  2. 方方格子Excel工具箱的使用教程
  3. 目标检测:YOLOV2
  4. pdf表格怎么转换成excel?
  5. Smobiler图片二进制上传处理
  6. php 后台数据 u,Yunucms代码审计:后台XSS和数据库信息泄露
  7. 2个方法解决PDF转成WORD
  8. 后端提供的excel文档流如何下载?——前端基础知识
  9. 图像基础--图像预处理技术(色彩插值、色彩校正、伽马校正、图像增强和白平衡)
  10. 华为交换机忘记密码怎么办