[英]Getting exception in NTAG213
我正在使用以下代碼在NTAG213 NFC標簽上設置AUTH0(需要密碼驗證的第一頁):
try {
result = nfca.transceive(new byte[]{
(byte) 0xA2, // Command: WRITE
(byte) 0x29, // Address: AUTH0
(byte) 0x00 // starting address
});
} catch (IOException e) {
e.printStackTrace();
}
但是,當我在AUTH0上寫00h(作為起始地址)時,總是會遇到異常:“收發失敗”。
你能告訴我這里可能出什么問題嗎?
NTAG213(以及其他NTAG和MIFARE Ultralight芯片)使用4字節的頁面大小。 WRITE命令(0xA2)僅可用於寫入整個頁面。 因此,WRITE命令的data參數需要包含4個字節。
最簡單的方法是只覆蓋整個配置頁:
result = nfca.transceive(new byte[]{
(byte) 0xA2, // Command: WRITE
(byte) 0x29, // Address: CONFIG0
(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00
});
但是請記住,這還將覆蓋其他配置參數(鏡像字節和鏡像頁)。 如果要將這些其他參數設置為其默認值,則可以簡單地使用以下命令:
result = nfca.transceive(new byte[]{
(byte) 0xA2, // Command: WRITE
(byte) 0x29, // Address: CONFIG0
(byte) 0x04, (byte) 0x00, (byte) 0x00, (byte) 0x00
});
但是,如果要將這些其他值保留在當前值中,則可能需要先閱讀頁面,然后使用這些值更新頁面(僅將AUTH0設置為0x00):
byte[] currentData = nfca.transceive(new byte[]{
(byte) 0x30, // Command: READ
(byte) 0x29, // Address: CONFIG0
});
result = nfca.transceive(new byte[]{
(byte) 0xA2, // Command: WRITE
(byte) 0x29, // Address: CONFIG0
currentData[0], currentData[1], currentData[2], (byte) 0x00
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.