2014-12-03 86 views
1

比方說,我們有一個自定義芯片,其中包含的數據存儲爲NDEF以及存儲在標準 NDEF數據之後的自定義數據。我們怎樣才能用Android讀取這些數據?從NDEF內容後的NFC中讀取數據?

回答

1

是的,這是可能的。您可以使用transceive(byte[] data)方法將RFID命令發送到標籤。

要發送的命令取決於您使用的標記類型。您應該閱讀您的標籤類型(ISO14443或ISO15693)的命令結構。爲了使用這些命令,您可能需要在標準中進行更深入的研究,以瞭解如何創建正確的命令序列。

爲ISO15693例,讀取單塊,命令代碼爲0x20(未經測試):

byte[] readSingleBlock(int block) throws IOException { 

    byte[] command = new byte[3]; 
     command[0] = 0x12;   // flags 
     command[1] = 0x20;   // read single block command 
     command[2] = (byte) block; 

    byte result[] = nfcv.transceive(command); 
    return result; 
} 
+0

corvairjo,你能explan你所說的 「塊」 是什麼意思?我通過intent.getParcelableExtra(NfcAdapter.EXTRA_TAG)讀取了數據; (?) – Jacob 2014-12-05 11:13:58

+0

正如Michael Roland所提到的那樣,具有樸素元件結構的RFID標籤以(通常)4個字節的塊組織。您需要確定您的NDEF消息在哪個塊中結束,然後您可以使用以下塊進行直接訪問。 – corvairjo 2014-12-08 09:00:31

1

這在很大程度上取決於您使用的標籤硬件的類型。 NDEF是一個抽象層,可讓您在任何標籤硬件上以相同方式處理數據。在NDEF層後面,每個標籤平臺都有自己的存儲器組織和自己的一組命令來訪問數據。

您可以在NFC Forum's website上找到每個標準化標籤平臺的規格,作爲「類型X標籤操作規範」。


例如,如果你有2型標籤(其具有平坦的存儲器結構和使用簡單的讀/寫命令訪問存儲器),一個NDEF消息將被從起4頁存儲。你可以使用更高的網頁存儲專有數據(例如,從第16頁開始)然後,您可以從Android的使用NFCA標籤技術訪問標籤:

Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG); 
NfcA nfcA = NfcA.get(tag); 
nfcA.connect(); 

byte[] result = nfcA.transceive(new byte[] { 
    (byte)0x30, /* CMD = READ */ 
    (byte)0x10 /* PAGE = 16 */ 
}); 
相關問題