2011-07-21 6 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)を返す場合、私はアンドロイドのNFCスタックがその例外を想定していると仮定し、したがって1をスローします。例外の後にタグに書き込むことができるのであれば、可能な応答の一部として例外を処理するようにしてください...問題があなたのタグであれば、USB NFCリーダーを使って同じコマンドを書く小さなプログラムを作ることができますあなたはどのような反応を見てください。あなたは安価なUSB NFCリーダーをWeb上で入手することができます(ACR122Uは使用されています) –

0

カードが不正なCRCをNexus Sに返送していたときにこの問題が発生しました。