【问题标题】:The PN532 configured as target has been released by its initiator配置为目标的 PN532 已被其发起方释放
【发布时间】:2014-07-16 09:58:44
【问题描述】:

我正在尝试将我的 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 已被其释放 发起人

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

非常感谢!

【问题讨论】:

  • 我相信您正在寻找的答案可以在此answer 中找到。你的设置可能不同,但是这个人有同样的问题。请务必阅读我链接中的 cmets 以查找更多信息。
  • TgGetDatacommand 是紧跟在TgInitAsTarget 命令之后,还是两者之间有(短)延迟?
  • 您从寄存器 0x​​6338 读取的值 (0x15) 看起来好像正在执行 AutoColl 命令。当您检索这些值时,您是否新插入了阅读器?另请注意,设置zz = (byte) 15; 不等于设置zz = (byte) 0x15;
  • @user2567273 tnx 等待您的回复。我做到了,我看了很多关于那个答案和 cmets 的内容。不幸的是,它没有走得更远。
  • @MichaelRoland 我尝试了几次重新插件和测试,现在寄存器值是 0x07、0x07、0x05。谢谢你的注意。我将 15 更改为 0x05。 TgGetData 和 TgInitAsTarget 之间有一个短暂的延迟。问题是否可能是我的指标在超时到期之前没有回复?

标签: java nfc hce acr122


【解决方案1】:

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

除了不一致的行为外,此问题可能有多种原因:

  • TgInitAsTargetTgGetData 之间的连接超时,因为在对 TgInitAsTarget 的响应和 TgGetData 命令之间存在太多延迟。我在单步调试卡模拟代码时遇到了这种情况。

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

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

【讨论】:

  • 您回答的第 3 点:通过发送另一个 TgInitAsTarget 来响应 PICC 解决了我的问题!非常感谢!
  • 除了后续我尝试了一个带有所有命令的while(true) 循环。我注意到每次成功都会失败。因此,在它失败后,第二个 TgInitAsTargetTgGetData 将成功。
  • Michael,我将我的 android 更新到 4.2.2,这个解决方案停止工作。是否有可能是更新导致了这个问题?这是一个非常奇怪的问题。
猜你喜欢
  • 1970-01-01
  • 2016-10-26
  • 2016-05-27
  • 1970-01-01
  • 2010-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多