我有一個奇怪的問題。當我調試我的程序並在「writeBlock」命令寫入我的MifareClassic卡之前放置一個斷點時,一切都很順利。該卡被寫入並且我的程序繼續。
如果我刪除斷點,我得到一個「IO異常:收發失敗」!我把斷點放回去而不改變我的代碼,它再次運行!Nexus S:在未進入調試模式時寫入MifareClassic NFC標籤失敗
我迷路了......難道這個問題有可能來自程序執行的速度嗎?有一個斷點,使執行速度較慢...
這裏是我的代碼(驗證此功能之前完成):
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;
}
}
感謝您的幫助
西爾