Hallo.
Ich mache einen neuen Thread auf, damit es nicht zu unübersichtlich wird.
ich habe ein RFID-Tag mit einem Text beschrieben und konnte es auch bereits erfolgreich wieder auslesen.
Dazu habe ich dieses Shield https://aptofun.de/NFC_Shield_V2.0
und diesen Code verwendet:
Nun stelle ich fest, dass die Zeile
NfcTag tag = nfc.read();
Serial.println(tag.getTagType());
Serial.print("UID: ");Serial.println(tag.getUidString());
immer die gleiche UID ausspuckt -- egal, welches Tag ich auslese. Ich habe zu Testzwecken drei Tags mit unterschiedlichen Texten beschrieben.
Bisher dachte ich, dass die UID hardwareseitig eindeutig ist?! Oder ist es lediglich so, dass damit nur eine Sorte (von einem Hersteller) eindeutig identifiziert werden kann?
So kann ich die UID jedenfalls nicht verwenden, um die einzelnen Tags auseinander zu halten.
Ideen? Danke.
Auch das Smartphone (App "NFC Tools) liefert überall eine identische UID (auch bei leeren, noch gar nicht verwendeten RFID-Tags ... scheint also herstellungsbedingt zu sein?!
es gibt tags bei denen man die UID ändern kann.
Vermutlich hast du solche.
Vieleicht ist das nun auch die Anregung, dass du dich eben NICHT auf die UID verlässt, sondern deine Tags selber mit etwas beschreibst wovon du weist, was was ist...
noiasca:
es gibt tags bei denen man die UID ändern kann.
Vermutlich hast du solche.
Kann sein -- der Verkäufer hat sich tatsächlich prompt gemeldet und versprochen, dass das Problem gelöst wird. Vorbildlich bisher!
[etwas später]
Ok, ich hab's hinbekommen ... die UIDs werden nun doch voneinander unterscheidbar eingelesen.
Ich kann die UIDs nun auch direkt als String verwenden und vergleichen:
String uidAsString = tag.getUidString();
Aber das nächste Problem lässt ja nicht lange auf sich warten: Wie kann ich es nun hinbekommen, dass das loop erst dann neu loslegt, wenn sich die alte UID von der neu eingescannten unterscheidet?
Tommy56:
Der loop sollte immer durchlaufen. Du kannst doch eine Aktion starten, wenn die Werte unterschiedlich sind.
Ja -- wenn ich das richtig sehe, müsste dazu der erste Vorgang (Lesen von Tag 1) gespeichert werden; dann muss das nächste Tag gelesen und die UIDs verglichen werden. Aber dann darf ja der neue Speichervorgang erst dann angestoßen werden, wenn die UIDs unterschiedlich waren.
Tommy56:
Dann musst Du lernen, um aus dem Zustand raus zu kommen.
Gerne -- ich brauche für diesen Fall aber das richtige "Buzzword" oder ein paar Zeilen Code, um zu sehen, wie man den Loop an eine Bedingung knüpft (wenn ich das richtig sehe) ...!?
whiterabbit07:
Gerne -- ich brauche für diesen Fall aber das richtige "Buzzword" oder ein paar Zeilen Code, um zu sehen, wie man den Loop an eine Bedingung knüpft (wenn ich das richtig sehe) ...!?
Nein. Weder das Eine noch das Andere.
Du brauchst einen Stift und einen Zettel.
Schreibe die Aufgabe.
Ich bin Stift, Zettel und Aufschreiber:
start setup
tag="";
ende setup
start loop
lese NFC
ist tag=="" ?
JA -> tag= Inhalt von NFC
NEIN -> nächste Runde
ende loop
Bei der nächsten Runde ist tag aber nicht mehr ""; damit geht der Vergleich nicht mehr.
Das prüfen auf "" ist also Kacke. Ic habe nur den Inhalt von tag und den Inhalt von NFC - also wird das verglichen.
Also neue Variante:
start setup
tag="";
ende setup
start loop
lese NFC
ist tag!==NFC ?
JA -> tag= Inhalt von NFC
NEIN -> nächste Runde
ende loop
So schwer ist das nicht. Dazu braucht es keinen Code und kein Buzzword.
Wobei Bleistift oder Radiergummi evtl. eines ist...