2012-10-08 3 views
2

아래 코드에서 "태그가 손실되었습니다"예외가 발생합니다. 그러나 데이터는 예외에도 불구하고 성공적으로 기록됩니다. 예외가 발생하더라도 데이터가 성공적으로 기록되는 이유는 무엇입니까?왜 NFC 태그 작성 데이터가 Successfull입니까? 태그 분실 예외가 발생했습니다

nfc.connect(); 
    byte[] arrByt = new byte[7]; 
    arrByt[0] = 0x01; //Command Flag 0x02 works fine 
    arrByt[1] = 0x21; 
    arrByt[2] = 0x06; 
    arrByt[3] = 0x00; 
    arrByt[4] = 0x00; 
    arrByt[5] = 0x00; 
    arrByt[6] = 0x00;   
    byte[] response = nfc.transceive(arrByt); 

내 NFC 칩

Type V (ISO/IEC 15693/Vicinity), Tag Type SL2 ICS2001 (ICODE SLI), Manufacturer NXP Semiconductors (Germany) 

here talked over 하지만 결과 :(

답변

3

NfcV 태그를 반환하면 비 성공 코드 안드로이드의 NFC 스택은 예외입니다 가정이 태그가 있었다 "던졌습니다 이 예외를 피하려면 0x02 명령을 사용하고 적절한 바이트 배열은 다음과 같습니다.
arrByte = {0x02, 0x21, 0x06, 0x00, 0x00, 0x00, 0x00}; 여기서 0x02는 플래그 명령이고, 0x21은 단일 블록 명령을 쓰고, 0x06은 블록 번호이며, remaing은 4 바이트의 데이터입니다. 희망이 도움이 될 것입니다.

+0

이므 란 - 쓰기 및 잠금 작업에 옵션 플래그를 사용해야하는 ISO15693 태그가있는 것을 제외하면 좋은 조언입니다. 그러면 오류없는 응답을 얻기 위해 EOF가 전송 된 후 얼마 후에 보내야합니다 태그에서. (TI 및 다른 제조사는이 방법을 사용합니다 - 옵션 플래그가 있거나없는 두 가지 방법 모두 ISO 표준에서 허용됩니다.) Nexus 4/Nexus 10 이상에서 최신 NFC 스택으로 복구되었지만 약간의 노력이 필요합니다 아마 안드로이드 NFC 스택의 이전 버전으로 던지기없이 쓰기가 가능하도록 만들어졌습니다. –

+0

미안 해요 @ImranZulfiqar, 저는 약간 혼란 스럽습니다. '0x80, 0x44, ... '명령을 NFC 태그에 보내야하지만이 예외가 발생합니다. 그래서 나는'0x02, 0x21, ... '을 먼저 보내고, 그 다음에 내 명령이나 뭐? – ericn