我正在尝试使用 ACR122U NFC 阅读器在 Windows 窗体应用程序(用 C# 编写)中创建 NDEF 消息并将其写入 NFC 标签。
我使用 Andreas Jakl 的NDEF 库创建了 NDEF 消息的原始字节。这是 C# 代码:
var spRecord = new NdefTextRecord {
Text = "1",
LanguageCode = "en"
};
var msg = new NdefMessage { spRecord };
string hex = BitConverter.ToString(msg.ToByteArray());
resultBox.Text = hex.Replace('-',' ');
我得到的输出是D1 01 04 54 02 65 6E 31(十六进制)。
然后,我使用以下 APDU 命令从块 #5 开始将此数据写入 NFC 标签(MIFARE Ultralight):
CL INS P1 P2 Lc DATA IN
FF D6 00 05 04 D1 01 04 54
CL INS P1 P2 Lc DATA IN
FF D6 00 05 04 02 65 6E 31
但是当我尝试使用 Android 读取该标签时,无法识别写入的 NDEF 消息。
为了让 Android 识别 NDEF 消息,我需要做什么?
解决方案(感谢 Michael Roland)
我使用 Android 应用程序编写了一个 NDEF 标签,然后将我在该标签上生成的值与我使用上述方法编写的标签进行了比较。一开始的差异是0x03 0x08。所以 0x03 是必需的起始字节,0x08 是 NDEF 消息的长度。
FF D6 00 04 04 03 08 D1 01
FF D6 00 05 04 04 54 02 65
FF D6 00 06 04 6E 31 FE 00