我有一个奇怪的问题。当我调试我的程序并在“writeBlock”命令之前放置一个断点来写入我的 MifareClassic 卡时,一切正常。卡片写好了,我的程序继续。
如果我删除断点,我会收到“IO Exception : transceived failed”!我在不更改代码的情况下放回断点,它又可以工作了!
我迷路了......问题可能来自程序执行的速度吗?有断点会使执行速度变慢......
这是我的代码(身份验证在此函数之前完成):
private static boolean WriteMfcBlock(MifareClassic mfc, int blockNumber, byte[] value) {
try {
byte[] toWrite = new byte[MifareClassic.BLOCK_SIZE];
//if the value is less than 16 bytes, fill it with '0'
for (int i=0; i<MifareClassic.BLOCK_SIZE; i++) {
if (i < value.length) toWrite[i] = value[i];
else toWrite[i] = 0;
}
if (!mfc.isConnected()) mfc.connect();
mfc.writeBlock(blockNumber, toWrite);
//Check if the writing is well done
byte[] read = mfc.readBlock(blockNumber);
for (int i = 0; i < MifareClassic.BLOCK_SIZE; i++ ) {
if (toWrite[i] != read[i]) return false;
}
return true;
}
catch (IOException e) {
textViewInfo.setText("IO EXCEPTION");
return false;
}
}
感谢您的帮助
西尔万