2011-07-21 103 views
2

我想知道是否有人在那裏遇到了我遇到的問題。Nexus S上的NFC:在寫入ISO 15693芯片上的未知塊時發生「TagLostException」芯片

我在寫應用程序,使用Nexus S NFC功能與特定的ISO 15693 RFID芯片對話。手機和芯片之間的通信在大多數時候都可以正常工作。 讀取和寫入塊也正在使用transcieve()發送原始字節數組。

我的芯片有8個塊,每個4個字節大。 當我試圖寫爲0以外塊 - 7,Android的拋出一個TagLostException:

07-21 14:07:39.390: WARN/System.err(5770): android.nfc.TagLostException: Tag was lost. 
07-21 14:07:39.394: WARN/System.err(5770):  at android.nfc.tech.BasicTagTechnology.transceive(BasicTagTechnology.java:141) 
07-21 14:07:39.398: WARN/System.err(5770):  at android.nfc.tech.NfcV.transceive(NfcV.java:92) 
07-21 14:07:39.398: WARN/System.err(5770):  at de.myapp.ForegroundDispatchNfcV.sendRawCommand(ForegroundDispatchNfcV.java:246) 
07-21 14:07:39.402: WARN/System.err(5770):  at de.myapp.ForegroundDispatchNfcV$3.onClick(ForegroundDispatchNfcV.java:135) 
07-21 14:07:39.406: WARN/System.err(5770):  at android.view.View.performClick(View.java:2485) 
07-21 14:07:39.406: WARN/System.err(5770):  at android.view.View$PerformClick.run(View.java:9080) 
07-21 14:07:39.410: WARN/System.err(5770):  at android.os.Handler.handleCallback(Handler.java:587) 
07-21 14:07:39.414: WARN/System.err(5770):  at android.os.Handler.dispatchMessage(Handler.java:92) 
07-21 14:07:39.414: WARN/System.err(5770):  at android.os.Looper.loop(Looper.java:123) 
07-21 14:07:39.417: WARN/System.err(5770):  at android.app.ActivityThread.main(ActivityThread.java:3683) 
07-21 14:07:39.421: WARN/System.err(5770):  at java.lang.reflect.Method.invokeNative(Native Method) 
07-21 14:07:39.421: WARN/System.err(5770):  at java.lang.reflect.Method.invoke(Method.java:507) 
07-21 14:07:39.425: WARN/System.err(5770):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
07-21 14:07:39.429: WARN/System.err(5770):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
07-21 14:07:39.429: WARN/System.err(5770):  at dalvik.system.NativeStart.main(Native Method) 

我希望從閱讀ISO 15693標準將得到一個包含相關信息的錯誤背面2個字節發生,但它接縫,如果芯片會保持安靜,並沒有回答。 嘗試讀取無效的塊時也會發生同樣的問題。

這是我的卡或API/NFC中的問題? 有沒有人知道更多關於這個問題?

回答

0

NFC芯片有一個內部狀態機,用於跟蹤它檢測到的標籤。當標籤超出讀寫器/手機的範圍,並且您嘗試寫入時,您將得到此例外。

+0

感謝您的回答。這其實不是我的問題。芯片停留在現場。當從現場移除RFID芯片時,我收到一條不同的消息(標籤丟失,重新啓動輪詢循環)。另外,當我捕捉到上面所示的異常時,我可以讀取並寫入所有有效的塊,之後沒有任何問題! – sege

+0

如果卡片返回一個不成功的狀態碼(9000),我認爲android的NFC堆棧會認爲它是一個異常,從而拋出一個。如果您仍然可以在異常後寫入標籤,只需讓您的例程作爲可能的響應的一部分處理異常即可......如果問題出在您的標籤上,您可以製作一個使用USB NFC讀寫器編寫相同命令的小程序並看看你得到了什麼答案。您可以在網上購買便宜的USB NFC讀取器(ACR122U就是使用的) –

0

我有這個問題,當卡發送一個不正確的CRC到Nexus S.