如何使用 C# 在 NFC 标签(卡:NTag-213,读卡器:ACR122)中读取和写入数据



我需要用c#编写自定义程序来读取和写入NFC标签,I正在使用Ntag-213卡和ACR122 nfc读卡器设备。

主要问题是将数据写入 nfc 标签。

我已经尝试过写这个:

public bool WriteBlock(String Text, String Block)
{
char[] tmpStr = Text.ToArray();
int indx;
if (AuthBlock(Block))
{
ClearBuffers();
SendBuff[0] = 0xFF; // CLA 
SendBuff[1] = 0xD6;// INS
SendBuff[2] = 0x00;// P1                           // P1
SendBuff[3] = (byte)int.Parse(Block);           // P2 : Starting Block No.
SendBuff[4] = (byte)int.Parse("16");            // P3 : Data length
for (indx = 0; indx <= (tmpStr).Length - 1; indx++)
{
SendBuff[indx + 5] = (byte)tmpStr[indx];
}

SendLen = SendBuff[4] + 5;
RecvLen = 0x02;
retCode = SendAPDUandDisplay(2);

if (retCode != Card.SCARD_S_SUCCESS)
return false;
else
return true;
}
else
return false;
}

看看CLA,INS肯定是错误的。

请参考ACR122手册中的超轻写示例 它也适用于NTAG。

步骤3(使用数据"AA BB CC DDh"更新第 04h 页的内容。(Tx( FF 00 00 00 09 D4 40 01 A2 04 AA BB CC DDh(Rx(

61 05h(
Tx( FF C0 00 00 05h
(Rx( D5 41 [00] 90 00h

步骤 3( 使用数据"AA BB CC DDh"写入(Mifare 兼容写入(第 04h 页的内容。
(德克萨斯州(FF 00 00 00 15 D4 40 01 A0 04 AA BB CC DD 00 00 00 00 00 00 00 00 00 00 00 00 00h(Rx(
61 05h(
Tx( FF C0 00 00 05h
(Rx( D5 41 [00] 90 00h
提示:执行此命令是为了适应已建立的 Mifare 1K/4K 基础结构。我们 必须将数据组合成 16 字节的帧。前 4 个字节是要写入的数据 页面,而其余字节(12 个零(用于填充。仅更新块 4(4 字节( 即使将 16 个字节发送到读取器。

最新更新