如何使NFC非接触式读取器ACR122U表现为标签(卡仿真模式)?招股说明书声称该设备可以进行卡片仿真,但SDK似乎没有提供此功能的示例或文档。
有人知道怎么做吗?是否需要额外的软件?请注意,我的目标平台是MS Windows。
Thanks in advance
对于"Card Emulation"或换句话说,"配置为目标并等待启动器",请参考此处:http://code.google.com/p/nfcip-java/source/browse/trunk/nfcip-java/doc/ACR122_PN53x.txt
<>之前**命令到PN532 **0xd4 0x8c TgInitAsTarget指令代码0x00可接受模式(0x00 =允许所有,0x01 =只允许被初始化为被动,0x02 =只允许DEP)_6 bytes (_MIFARE_)_:0x08 0x00 SENS_RES0x12 0x34 0x56 NFCID10 x40 SEL_RES_18 bytes (_Felica_)_:0x01 0xfe 0xa2 0xa3 0xa4 0xa5 0xa6 0xa7NFCID20xc0 0xc1 0xc2 0xc3 0xc4 0xc5 0xc6 0xc7?0xff 0xff系统参数?0xaa 0x99 0x88 0x77 0x66 0x55 0x44 0x33 0x22 0x11NFCID30 x00吗?0 x00吗?之前这是启动器激活此目标时的响应:
<>之前** PN532的回应**0xd5 0x8d TgInitAsTarget响应码0 x04模式(0x04 = DEP, 106kbps)之前让我知道它是否有效!
您也可以尝试发送以下ADPU在HEX中使阅读器处于"卡仿真"模式:
FF 00 00 00 27 D4 8C 00 08 00 12 34 56 40 01 FE A2 A3 A4 A5 A6 A7 C0 C1 C2 C3 C4 C5 C6 C7 FF FF AA 99 88 77 66 55 44 33 22 11 00 00
要使ACR122(或更确切地说是其中的PN532 NFC控制器芯片)进入卡仿真模式,您将执行以下操作:
-
ReadRegister:
> FF000000 08 D406 6305 630D 6338 < D507 xx yy zz 9000
-
更新寄存器值:
xx = xx | 0x004; // CIU_TxAuto |= InitialRFOn yy = yy & 0x0EF; // CIU_ManualRCV &= ~ParityDisable zz = zz & 0x0F7; // CIU_Status2 &= ~MFCrypto1On
-
WriteRegister:
> FF000000 11 D408 6302 80 6303 80 6305 xx 630D yy 6338 zz < D509 9000
-
SetParameters:
> FF000000 03 D412 30 < D513 9000
-
TgInitAsTarget
> FF000000 27 D48C 05 0400 123456 20 000000000000000000000000000000000000 00000000000000000000 00 00 < D58D xx ... 9000
其中
xx
= 0x08 -
使用TgGetData和TgSetData命令序列进行通信:
> FF000000 02 D486 < D587 xx <C-APDU> 9000
其中
xx
为状态码(如果成功则为0x00
), C-APDU为读取器发出的命令。> FF000000 yy D48E <R-APDU> < D587 xx 9000
其中
yy
为2 + R-APDU的长度(响应),xx
为状态码(成功为0x00
)。
可以使用LibNFC。它有一个示例代码。
不幸的是,我仍然没有在Windows中正常工作。您可能需要为特定的驱动程序编译libnfc。
另外,ACR122u似乎没有得到很多库的支持。显然,它并不是为这种用途而设计的。卡模拟也有一些特殊的问题(比如超时)。我们真的都需要去一下ACR122u。我只是买了流行的,容易拿到的东西,但现在后悔了。
对于未来的浏览器/搜索者遇到这个问题:请检查libfc网站的兼容性部分,并购买他们推荐的东西!