【发布时间】:2022-01-20 10:02:25
【问题描述】:
我正在使用 Flutter nfc_manager 来读取、写入和保护操作。
现在我需要找到类型。比如我需要知道扫描到的tag是NTAG213还是NTAG216。
使用 nfc_manager 进行检查的任何可能性。
【问题讨论】:
我正在使用 Flutter nfc_manager 来读取、写入和保护操作。
现在我需要找到类型。比如我需要知道扫描到的tag是NTAG213还是NTAG216。
使用 nfc_manager 进行检查的任何可能性。
【问题讨论】:
没有标准方法可以准确识别 NFC 标签,有一些方法可用于帮助推断您正在处理的标签,但其中一些是特定于家庭的方法,用于识别标签系列的哪个成员是。
由于这些方法是较低级别的访问类型,如何在 iOS 和 Android 上使用它们是不同的。
在底层,不同的标签技术有不同的方法来获取标签的更多细节。
在 Flutter 方面,您可以使用 from 方法至少缩小您正在使用的标签技术。如果标签类型不正确,from 方法将返回 null。
例如,如果它是NfcA 标签硬件(就像 NTAX21x 标签一样),不同的 NFC 标签系列通常会给出不同的低级别 ATQA 和 SAK 响应(此数据实际上用于计算一些标签技术,但不是全部,例如 Mifare 等)。这个 ATQA 和 SAK 响应在 Android 和 iOS 中以不同的方式提供
然后从标签的 UID 开始,第一个字节应该是制造商标识符,因此对于 NXP,所有 UID 都应该以 04h 开头
然后有一些特定于标签系列的东西,例如对于 NTAX21x 系列,您可以 transceive 或 sendMiFareCommand "GET_VERSION" 60h 命令获取产品信息并按照 @987654321 对其进行解码@
但是知道确切的标签类型有什么用吗?,您只是想知道可以在上面存储多少数据吗?
除了使用 NTAX21x "GET_VERSION" 命令之外,还有更通用的方法是使用 NDEF size 方法来获取有关此标签可以存储多少数据的更有用的信息。此 NDEF 大小应适用于符合 NFC 论坛标签标准之一的任何标签,例如在 NTAX21x 情况下键入 2。
(此外,任何类型 2 标记的大小都存储在功能容器中的页面 03h 中,以字节 02 为单位,您可以将 transceive 或 sendMiFareCommand READ 03h 命令发送到任何类型 2 标记以获取此数据)
【讨论】:
NXP 提供了一个名为 TapLinx 的库,它提供了简单的 API 来与 NXP 制造的标签进行交互。如果您不想了解详细信息,可以使用它。
【讨论】: