我正在尝试使用 ACR122U NFC 读取器创建 NDEF 消息并将其写入 Windows 窗体应用程序(用 C# 编写)中的 NFC 标签。
我使用 Andreas Jakl 创建了 NDEF 消息的原始字节NDEF库 https://github.com/andijakl/ndef-nfc。这是 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 消息?
解决方案(感谢迈克尔·罗兰)
我使用 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