我正在尝试使用mifare classic卡1k和android nfc (在galaxy nexus上)读取数据块。
private final int mMaxSize = 64;
mClassic.connect();
boolean success = mClassic.authenticateSectorWithKeyA(1, MifareClassic.KEY_DEFAULT );
final ByteArrayBuffer b = new ByteArrayBuffer(mMaxSize);
if (success)
{
b.append(mClassic.readBlock(0), 0, 16);
b.append(mClassic.readBlock(1), 0, 16);
b.append(mClassic.readBlock(2), 0, 16);
b.append(mClassic.readBlock(3), 0, 16);
}如果我想读取扇区0,这一切都没问题。但是如果我想读取一个不同的扇区(例如扇区1),success具有真实值,但是当应用程序转到readBlock()时,IOException被触发,并且我返回了tranceiver failed。
我做错了什么?
发布于 2013-07-13 21:00:50
在您的代码示例中,您正在对sector 1进行身份验证,但随后尝试从sector 0读取数据块。请记住,扇区和块号是从零开始的。您也可能对blockToSector(int block)感兴趣。
发布于 2018-09-24 20:13:07
你应该
b.append(mClassic.readBlock(4), 0, 16);
b.append(mClassic.readBlock(5), 0, 16);
b.append(mClassic.readBlock(6), 0, 16);
b.append(mClassic.readBlock(7), 0, 16);https://stackoverflow.com/questions/16462327
复制相似问题