2014-04-15 2 views
0

어떻게 MIFARE 클래식 태그에 쓸 수 있습니까?MIFARE 클래식 태그에 어떻게 쓸 수 있습니까?

이 코드를 작성했지만 writeBlock은 "java.io.IOException : transceiverive failed"오류를 발생시킵니다.

어떻게 해결할 수 있습니까?

MifareClassic mfc = MifareClassic.get(mytag); 
boolean auth = false; 
mfc.connect(); 
auth = mfc.authenticateSectorWithKeyA(1,MifareClassic.KEY_DEFAULT); 
if (auth) { 
    String text = "Hello, World!"; 
    byte[] value = text.getBytes(); 
    byte[] toWrite = new byte[MifareClassic.BLOCK_SIZE];   

    for (int i=0; i<MifareClassic.BLOCK_SIZE; i++) { 
     if (i < value.length) toWrite[i] = value[i]; 
     else toWrite[i] = 0; 
    }   

    mfc.writeBlock(2, toWrite); 
} 
+0

어떤 행에서 예외가 발생합니까? – Rob

+0

writeBlock (2, towrite)의 행 – Luca

+0

올바른 키를 사용하고 있습니까? 첫 번째 섹터는 일반적으로 기본 키를 사용하지 않습니다. 어쩌면 두 번째 섹터를 시도해보십시오 (예를 들어 블록 4). – Rob

답변

1

우선 잘못된 섹터를 인증하고 있습니다. 여기에서, 당신은 키 A를 섹터 1에 인증 : 당신은 if (auth) 과거를 얻을으로 섹터 1이 성공을 위해, 나는 키 A와 KEY_DEFAULT으로 그 인증을 가정

auth = mfc.authenticateSectorWithKeyA(1, MifareClassic.KEY_DEFAULT); 

.

그러나 그 다음, 당신은 섹터 0에있는 2 블록 쓰기를 시도 :

mfc.writeBlock(2, toWrite); 

당신이 부문 1로 인증되기 때문에, 실패 섹터 0에 기록. 마지막으로 인증 한 섹터의 블록에만 쓸 수 있습니다. 섹터 1의 경우 이것은 블록 4 - 7입니다. 섹터 2에 인증하고 블록 4 (섹터 1에 있음)를 쓰려고하면 같은 문제가 발생합니다.

게시물 아래의 댓글을 올바르게 읽으면 섹터 1과 액세스 블록 4에 인증을 시도해 동일한 오류가 발생합니다. 이 경우 섹터 1의 액세스 조건은 키 A에 대한 쓰기 작업을 금지합니다.

+0

가 지금은 인증 = mfc.authenticateSectorWithKeyA (2, MifareClassic.KEY_DEFAULT) 수정이, 감사합니다, 및 mfc.writeBlock (8, toWrite) 대화 상자를 그 I 이 태그를 작성했는데이 태그를 읽으면 비어 있습니다. 사용하는 전화는 "Samsung Mini 2" – Luca

+0

@ 루카 태그를 읽을 때 무엇이 ​​비어 있습니까? 어떻게 읽습니까? –

+0

태그가 없습니다. "경고 대화 상자"가 삽입되어 있지만, 태그가 쓰여지지 않습니다. 아직 비어 있습니다. – Luca

관련 문제