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")
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. –
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
Der Standardwert ist im [Handbuch (siehe Seiten 18-19)] beschrieben (http://www.nxp.com/documents/data_sheet/NTAG213_215_216.pdf)). –