奇妙な問題があります。プログラムをデバッグし、「writeBlock」コマンドの前にブレークポイントを置いてMifareClassicカードを書き込むと、すべてが正常に機能します。カードが書き込まれ、私のプログラムは続行されます。
ブレークポイントを削除すると、「IO例外:転送に失敗しました」というメッセージが表示されます。コードを変更せずにブレークポイントを元に戻しました。再び機能します。
私は迷子になっています...問題はプログラムの実行速度に起因している可能性がありますか?ブレークポイントがあると、実行が遅くなります...
これが私のコードです(認証はこの関数の前に行われます):
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;
}
}
助けてくれてありがとう
Sylvain