配置为目标的PN532已由其启动器释放

我试图将我的PN532置于卡仿真模式。 当我发送TgGetData命令时,错误我从阅读器返回错误。

1。 读取寄存器

 {(byte)0xFF,0x00,0x00,0x00,0x08, (byte)0xD4, 0x06, 0x63, 0x05, 0x63, 0x0D, 0x63, 0x38 } RESPONSE :: D507 07 07 15 9000 

2。 更新寄存器

 byte xx = (byte) 07; byte yy = (byte) 07; byte zz = (byte) 15; xx = (byte) (xx | 0x004); yy = (byte) (yy & 0x0EF); zz = (byte) (zz & 0x0F7); 

3。 写寄存器

 {(byte)0xFF,0x00,0x00,0x00,0x11, (byte) 0xD4, 0x08, 0x63, 0x02, (byte) 0x80, 0x63, 0x03, (byte) 0x80, (byte) 0x63, (byte) 0x05, xx, 0x63, 0x0D,yy, 0x63, 0x38, zz} RESPONSE :: D509 9000 

4。 设置参数

 {(byte)0xFF, 0x00, 0x00 ,0x00, 0x03, (byte)0xD4, 0x12, 0x30} RESPONSE :: D513 9000 

5。 TgInitAsTarget

 {(byte)0xFF, 0x00, 0x00, 0x00 , 0x27 , (byte)0xD4, (byte)0x8C , 0x05 , 0x04, 0x00 , 0x12, 0x34, 0x56 , 0x20 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00} RESPONSE :: D58D 08 E0 80 9000 

6。 TgGetData

 {(byte)0xFF, 0x00, 0x00 ,0x00, 0x02, (byte)0xD4, (byte)0x86} RESPONSE :: D587 29 9000 

所以TgGetData的响应给出了错误代码D587 29 9000,其中包含PN532用户手册之后的方法:

  • 错误代码0x29:配置为目标的PN532已由其启动器释放

欢迎任何与此代码相关的建议或评论。

提前谢谢了!

首先,存在几种不同版本的ACR122U,它们的行为有很大不同。 我已经成功地使用版本101和102测试了上述序列,并且可以模拟这些读取器的无结构智能卡。 但是,版本103似乎接受这些命令,但无法检测为非接触式卡。 我的测试都没有透露你的问题。

除了这种不一致的行为,这个问题可能有几个原因:

  • 连接在TgInitAsTargetTgGetData之间TgInitAsTarget ,因为对TgInitAsTargetTgGetData命令的响应之间存在太多延迟。 我在单步调试我的卡仿真代码时遇到了这个问题。

  • 阅读器自动启用自动PICC检测(这似乎仅在2xx版本上可用),因此会覆盖您为卡仿真发送的命令和参数。 ACR122U手册表示您可以通过发送APDU命令FF 00 51 00 00来禁用自动PICC检测。 我用我的10x版本尝试了这个,他们理解这个命令。

  • 导致模拟PICC被释放的激活(并因此导致TgGetData返回状态代码0x29)可能是读者常规操作的一部分:例如,这可能表示读取器激活了模拟PICC,然后停止并停用然后,读取器可以重新激活HF场并重新激活模拟的PICC。 在这种情况下,您必须重新启动PICC仿真(一旦从TgGetData收到状态代码0x29,就会发出另一个TgInitAsTarget命令。

    Interesting Posts