2016-10-21 6 views
0

Ich versuche, einen NTAG216 mit Passwortschutz zu konfigurieren.Konfigurieren von AUTH0-Feld in NXP NTAG216

Ich versuche, geschützte Adresse in AUTH0 Byte zu schreiben, ich habe das gesamte Dokument auf Tag2x gelesen, aber ich kann nicht herausfinden, wie dies zu tun ist.

Wenn ich Tagsinhalt analysiere, kann ich sehen, dass AUTH0 dedizierte Seite .r flach hat, das bedeutet, dass es schreibgeschützt ist, aber wie kann ich diese Seite entsperren?

Kann mir jemand helfen oder ein Beispiel oder ein android doc dafür angeben?

Vielen Dank im Voraus

Antwort

0

Ich habe mein Problem gelöst.

Das Problem war, dass ich zuvor versehentlich PWD, PACK und AUTH0 gesetzt habe, also kann ich nicht mehr auf AUTH0 Adresse schreiben, weil diese Adresse gesperrt war.

Wie in Docs geschrieben, ist diese Adresse einfach als normale Speicherseite beschreibbar.

Mit android Ich verwende diesen Code NTAG216

Laut Michael Roland zu sichern ich meinen Code wie folgt bearbeitet haben. Ich bevorzuge es, de default-Wert in der CFG1 zu schreiben, weil dieser Code für mich als eine Initialisierung des Tags dient, dann werde ich es in lesen und schreiben, so dass es unmöglich sein sollte, zu einem Schmutzdatenzustand zu kommen

// PWD 
if (!ntag.write(0xE5, pwd.getBytes(CHARSET))) { 
    showToastMex("ERROR IN WRITING PWD"); 
    retValue = false; 
} 

// PACK 
if (retValue) { 
    byte[] empty = {0x00, 0x00}; 
    byte[] completePack = ArrayUtils.addAll(pack.getBytes(HbgHelper.CHARSET), empty); 
    if (!ntag.write(0xE6, completePack)) { 
     showToastMex("ERROR IN WRITING PACK"); 
     retValue = false; 
    } 
} 

// PROT (enable read and write password protection from AUTH0 ADDRESS 
if (success) { 
    byte accessCfg = (byte)Integer.parseInt("10000000", 2); 
    byte[] cfg2 = {accessCfg, 0x00, 0x00, 0x00}; 
    if (!ntag.write(0xE4, cfg2)) { 
     showToast("ERROR IN WRITING PROT"); 
     success = false; 
    } 
} 

// AUTH0 (from page 220 = DCh) 
if (retValue) { 
    byte[] toWrite = {(byte)0x01, (byte)0x00, (byte)0x00, HbgHelper.LOCK_MEM_ADDR_START}; 
    if (!ntag.write(0xE3, toWrite)) { 
     showToastMex("ERROR IN WRITING AUTH0"); 
     retValue = false; 
    } 
} 

wo

MEM_ADDR_TO_LOCK = (byte) 0xDC 

und

CHARSET = Charset.forName("UTF-8") 
+1

Sie möchte auf keinen Fall ein Leerzeichen (was wahrscheinlich zu 0x20 übersetzt je nach charset) zu den ersten drei Bytes der CFG1 Seite (0xE3 schreiben). Stattdessen sollten Sie entweder den vorhandenen Wert lesen und diesen Wert in der Schreiboperation verwenden, oder Sie sollten diese Werte auf die Standardwerte setzen (dh verwenden Sie byte [] toWrite = {(Byte) 0x01, (Byte) 0x00, (Byte) 0x00, MEM_ADDR_TO_LOCK}; '). Entsprechend sollten Sie für den PACK-Wert ** nie ** die oberen zwei Bytes mit einem anderen Wert als 0x00 schreiben. –

+0

Vielen Dank für Ihre Antwort. Ich werde Ihrem Vorschlag folgen, aber ich kann nicht herausfinden, wie Sie den Standardwert für CFG1 ermittelt haben. So bald wie möglich werde ich den Antwortcode entsprechend Ihren Vorschlägen aktualisieren – firegloves

+0

Der Standardwert ist im [Handbuch (siehe Seiten 18-19)] beschrieben (http://www.nxp.com/documents/data_sheet/NTAG213_215_216.pdf)). –