Hallo ich bin neu hier im Forum und habe gleich ein Problem auf das ich einfach keine vernünftige Lösung finde.
Ich verwende ein NFC Lesegerät auf Basis PN532 welches über i2c mit Ardunio verbunden ist.
Das funktioniert tadellos und tut auch für das Problem nichts zu Sache.
Ich bekomme den Key der NFC Karte wie folgt ausgelesen.
for (uint8_t i=0; i < uidLength; i++)*
{*
_ Serial.print(uid*, HEX);_
_ }_ auch einzelne Blöcke auslesen funktioniert
_ Serial.print(uid[1], HEX);_
_ Serial.print(uid[1], HEX);_
_ Serial.print(uid[2], HEX);_
_ Serial.print(uid[3], HEX);_
_ Serial.print(uid[4], HEX);_
_ Serial.print(uid[5], HEX);_
_ Serial.print(uid[6], HEX);*_ Mir geht es nun darum, wie bekomme ich diese Sätze in einen Variable - sprich String? Ich muss den ganzen Schlüssel vergleichen, da nur eine aktion erfolgen darf, wenn der richtige Schlüssel ausgelesen wird. Bitte um Info, wie man das Array in einen String schreiben kann... Danke Michael
Hallo Jurs
Danke das mit dem Vergleichen hätte ich noch hinbekommen.
Da ich diesen Key "recht mundgerecht" weiterverarbeiten möchte - Anzeige am Display usw. möchte ich eben diesen konvertieren und in einer "Variable" abspeichern.
mastergraf:
Hallo Jurs
Danke das mit dem Vergleichen hätte ich noch hinbekommen.
Da ich diesen Key "recht mundgerecht" weiterverarbeiten möchte - Anzeige am Display usw. möchte ich eben diesen konvertieren und in einer "Variable" abspeichern.
Absolut trivial ist das nicht. Da du als String ja mehrere Bytes für eine Zahl brauchst. z.B. 123 ist "123" oder "7B" und dann brauchst du noch Trennzeichen dazwischen. Kommt letztlich auf das genaue Format an das du willst.
Es ist aber kein großes Problem einen entsprechend großen Puffer anzulegen (die Größe ist durch das gewünschte Format bekannt), über das Array zu iterieren, die Werte einzeln zu Wandeln und auf die korrekten Positionen zu schreiben und wenn gewünscht ein Trennzeichen einzufügen. Man muss aber mit den Indizes aufpassen.
mastergraf:
ich möchte ja nur wissen wie man ein solches Arry konvertieren kann....
In was konvertiert?
Vielleicht in eine HEX-Darstellung, dann ist die Länge des Strings immer gleich?
Serial.begin(9600);
uint8_t uid[] = { 0x60, 0x61, 0x62, 0xA3, 0x04, 0x50, 0x00 }; // Buffer to store the returned UID
char uidStr[2*sizeof(uid)+1]; // String buffer to store UID in HEX representation
snprintf(uidStr,sizeof(uidStr), "%02x%02x%02x%02x%02x%02x%02x", uid[0],uid[1],uid[2],uid[3],uid[4],uid[5],uid[6],uid[7]);
Serial.println(uidStr);
Die UID bei Mifare Karten ist nur 4 Byte plus Prüfziffer lang. Spar Dir das 6. und 7.Byte. siehe unten.
Ich hatte das Problem auch, habe es aber ebenso wie jurs beschreibt verwendet. Hier kannst Du sehen wie ich damit umgegangen bin: DuinoSqueeze: 01/10/13.
Eberhard
Lese gerade, dass es auch 7-Byte UID's gibt. Man lernt nie aus! Hängt wohl von der Karte und dem NFC Chip ab.