整理一个半年前做的好玩的东西,连线图在此:http://blog.csdn.net/chenxupro/article/details/8795725
主要思路是蓝牙串口模块HC-05连接nfc芯片pn532的TTL串口,Android手机通过蓝牙连接HC-05,修改libnfc的buses中的uart_posix.c代码,将它改造成通过Android蓝牙(bluetooth spp协议)提供的接口,发送串口读写指令操作pn532。
libnfc部分属于JNI层,采用NDK编译,UI层调用下层的函数。
完整代码在此:https://sourceforge.net/projects/androidbluesppnfc/
核心代码为:AndroidBlueSppNfc.c+uart_bluespp.c+mfoc.c+AppMain.java
AndroidBlueSppNfc.c为列出卡,读卡UID,模拟卡UID,发送消息等功能。
uart_bluespp.c为uart_posix.c结合蓝牙spp改写,相当于新增了一种名为bluespp的总线。
mfoc.c是另一个开源项目mfoc里的调用部分,在这里用于读取卡内部的数据,由于学校一卡通我们之前已经破解,所以直接设定了key去读取(为了避免不必要的麻烦,共享出的代码里去掉了这个key,以及上层java代码里计算卡内信息部分的代码)。
AppMain.java是整个软件的上层UI部分,用于menu选择,结果显示,代码很简单。
感谢小明(http://jointxmg.com/)提供pn532板子,感谢Bigroomer们提供饭卡测试^_^。
增加这么个转接设备和软件后普通的Android手机也具备了NFC的功能哟!
效果图在此: