问题描述
你好,我正在使用 APDU 命令来写入和读取 RFID 卡。我可以从块 num 2 中读取并写入 16 个字节的数据。但我在写更长的数据时遇到问题,所以我怎么能管理我试图写在两个块中,但它不起作用。 这是我在编写操作中实现代码的方式
// write...
//
if (nres == SM_SUCCESS)// &&
//bAPDURes )
{
nlenrcv = sizeof(btRcv);
nlencmd = 0;
btCmd[nlencmd++] = 0xFF; // CLA
btCmd[nlencmd++] = 0xD6; // INS
btCmd[nlencmd++] = 0x00; // P1,mifare Block Number MSB,for mifare it is always 0x00
btCmd[nlencmd++] = 0x04; // P2,mifare Block Number LSB
btCmd[nlencmd++] = 32; // Lc,Data Length
memcpy(btCmd + nlencmd,btWrite,32);
nlencmd += 32;
nres = m_Smart.rftransmit(DEV_INTERNALRF,nlencmd,btCmd,(DWORD*)&nlenrcv,btRcv);
解决方法
您需要单独发送每个块。 Mifare Classic Write
命令一次只会写入一个块。
因此 RFTransmit 将前 16 个字节的写入命令发送到第一个块,RFTransmit 将后 16 个字节的写入命令发送到下一个块。