繁体   English   中英

mifare classic 1k-Android-读取失败

[英]mifare classic 1k - Android - Tranceive failed on reading block

我正在尝试使用mifare经典卡1k和android nfc(在银河系上)读取块。

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),则成功具有真正的价值,但是当应用程序进入readBlock() ,将触发IOException ,并且我返回的收发器失败。

我做错了什么?

在您的代码示例中,您正在对扇区1进行身份验证,然后尝试从扇区0中读取块。 请记住,扇区号和块号是从零开始的。 您可能也对blockToSector(int block)感兴趣。

你应该

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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM