我遇到了一种奇怪的情况,我试图在标记模拟和标记读取器模式之间切换我的PN532。读取器要70 and,标签仿真要运行600 and。
我想要发生的是,当我把我的Android设备放在天线附近时,它会读取模拟标签。当我将NFC标记保存到PN532时,它应该读取该标记。
我的解决方案有点奏效,但我看到了一种奇怪的情况,当我调用readPassiveTargetID来测试是否存在被动标记时,Android就会做出响应。这很好,但我认为Android正在推出一种服务,阻止它读取模拟标签。
在测试这一点时,设备有时根本不与PN532通信,但当它们这样做时,最常见的是读取器模式。这是发生这种情况时得到的输出:
Nexus 5x (Android 6):
<< 4A 1 0
>> 4B 1 1 0 4 60 4 1 2 3 4 5 78 80 71 0Galaxy S4 (Android5.0.1):
<< 4A 1 0
>> 4B 1 1 0 4 20 4 8 87 F6 62 5 78 B3 70 25x通常会在一秒钟左右之后读取模拟的标记,但是当我在这两种模式之间切换时,S4很少读取标记。当我只是运行标记仿真时,两个设备都完美无缺地工作。
我在想我正在做的事情可能有一些问题。
发布于 2016-05-22 09:32:24
我的解决方案有点奏效,但我看到了一种奇怪的情况,当我调用readPassiveTargetID (InListPassiveTarget)安卓系统时,会出现这样的情况。
这不是一种奇怪的情况,但当您尝试从任何ISO/IEC 14443A读取器访问NFC设备时,这是意料之中的事情。NFC设备通常支持
当NFC设备轮询标记时,这通常类似于InListPassiveTarget所做的工作,其不同之处在于它通常会测试各种不同的标记技术(NFC= ISO/IEC 14443A、NFC= ISO/IEC 14443B、NFC=JISX6319-4和NFC= ISO/IEC 15693)。由于被动对等模式基于ISO/IEC 14443A和JIS X 6319-4,它还将通过对NFC-A和NFC-F的测试自动发现被动对等目标。此外,它还将测试其他对等设备(ISO/IEC 18092活动模式).
当NFC设备侦听其他设备(对等或读取器/写入模式)的激活时,它将允许使用ISO/IEC 18092中定义的各种选项进行激活。由于这些子协议是基于NFC-A和NFC的,因此支持被动对等模式和卡模拟模式的NFC设备通常会将两种模式的侦听“阶段”合并成一个可激活的目标。
这正是你所看到的:一个支持ISO/IEC 14443A和ISO/IEC 18092无源模式的设备。这两种协议都采用了ISO/IEC 14443A的防碰撞和选择程序。为了简化发现,NFC设备将卡片模拟模式和点对点模式结合到一个可见目标(即一个带有一个UID的“卡片”)中。
您可以从激活期间收到的参数值(特别是SAK/SEL_RES字节)中清楚地看到这一点。此字节为Nexus5X的0x60,这表明该目标支持具有位5集的ISO/IEC 14443-4 (类型A),以及支持在106 This和bit 6集下的ISO/IEC 18092无源。
请注意,三星在他们的银河S4决定不宣布点对点模式支持在S4字节(0x20),可能是由于一些信用卡支付终端的问题。
这很好,但我认为Android正在推出一种服务,阻止它读取模拟标签。
实际上,这并不是一项不断发展的服务,而是Android有意引入一个超时。一旦Android设备在点对点或卡模拟模式下被激活,在外部阅读器关闭其HF字段后,Android设备将等待大约4秒,然后重新开始对标记的轮询。这至少是我们用libnfc为Nexus设备测量的。三星以广泛修改NFC栈实现而闻名(通常会引入许多额外的bug(特性?)),因此这在S4上可能略有不同。
我需要做一些特殊的事情来切换模式吗?当我切换时,我实际上不会重置或重新初始化PN532。
你可能在做你该做的事。这是一个故意的超时(4秒后,字段关闭)在Android方面,导致您的经验。
我是否可以发送命令来告诉设备停止侦听,或者我可以发送一个设置来修复这个问题?
不幸的是,这通常并不容易。你可以做几件事:
NfcAdapter.enableReaderMode() )。这再次将您限制在运行Android 4.4+的设备上(尽管所有NFC芯片组都支持)。我怀疑这对安卓方面使用HCE是否有很大好处,因为当用户试图用手机点击an 532端以便自动打开应用程序或安装应用程序(通过AAR)时,问题就出现了。https://stackoverflow.com/questions/37213889
复制相似问题