【发布时间】:2021-04-21 13:36:54
【问题描述】:
您好,我正在使用 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);
【问题讨论】:
-
嗯,这个问题我们无法准确回答——我认为不可能发布一个最小的可重现示例。在我看来,这条消息的格式很好......这里有一些问题可能会帮助您找到答案:1.您确定 P1 和 P2 是大端(您是否尝试过交换它们?) 2.您确定 CLA + INS组合能写2个字节以上吗? 3.你确定这个
RFTransmit库函数正在向卡发送正确的东西吗? 4.你怎么知道“它不起作用”? - 程序验证这个数据写入的方式会不会有问题?