Verstehe das im Moment überhaupt nicht. Vielleicht wäre jemand so nett und würde mir weiter helfen.
Danke.
Der Code stammt aus einem Beispiel von PN532 NFC. Ich möchte eine Variable (nachricht) hinzufügen in der alle Nachrichten eines Tags gespeichert werden. (Falls dieser mehrere enthält).
int payloadLength = record.getPayloadLength();
byte payload[payloadLength];
record.getPayload(payload);
String payloadAsString = "";
for (int c = 0; c < payloadLength; c++) {
payloadAsString += (char)payload[c];
}
payloadAsString.trim();
nachricht += payloadAsString;
// nachricht = nachricht + payloadAsString; habe ich mal getestet
Serial.println(payloadAsString.length(),DEC); //43
Serial.println(nachricht.length(),DEC); //43 also enthält die variable zeichen
Serial.print(" Nachricht: ");
Serial.println(nachricht); // es wird nichts ausgegeben!!
Serial.print(" Payload (as String): ");
Serial.println(payloadAsString); //Der String wird ausgegeben
Es geht um die Zeile Serial.println(nachricht); // es wird nichts ausgegeben!!
Dieser Text wird aber ausgegeben: Serial.println(payloadAsString); //Der String wird ausgegeben
String nachricht = ""; habe ich als globale variable definiert, da dort jede Nachricht hinzugefügt werden soll
Warum wird der String nachricht nicht angezeigt obwohl er Zeichen enthält? Ist bestimmt eine ganz einfache sache, nur komm ich nicht drauf
#if 0
#include <SPI.h>
#include <PN532_SPI.h>
#include <PN532.h>
#include <NfcAdapter.h>
PN532_SPI pn532spi(SPI, 10);
NfcAdapter nfc = NfcAdapter(pn532spi);
#else
#include <Wire.h>
#include <PN532_I2C.h>
#include <PN532.h>
#include <NfcAdapter.h>
PN532_I2C pn532_i2c(Wire);
NfcAdapter nfc = NfcAdapter(pn532_i2c);
#endif
String nachricht = "";
void setup(void) {
Serial.begin(115200);
Serial.println("NDEF Reader");
nfc.begin();
}
void loop(void) {
nfc_read();
}
void nfc_read(void) {
Serial.println("\nScan a NFC tag\n");
if (nfc.tagPresent()) // Wenn tag erkannt
{
NfcTag tag = nfc.read(); // tag lesen
Serial.println(tag.getTagType()); // tag type
Serial.print("UID: ");Serial.println(tag.getUidString()); // tag UID
if (tag.hasNdefMessage()) // tag hat nachricht drauf
{
NdefMessage message = tag.getNdefMessage();
Serial.print("\nThis NFC Tag contains an NDEF Message with ");
Serial.print(message.getRecordCount());
Serial.print(" NDEF Record");
if (message.getRecordCount() != 1) {
Serial.print("s");
}
Serial.println(".");
int recordCount = message.getRecordCount();
for (int i = 0; i < recordCount; i++)
{
Serial.print("\nNDEF Record ");Serial.println(i+1); //NDEF Record 1
NdefRecord record = message.getRecord(i);
Serial.print(" TNF: ");Serial.println(record.getTnf()); // Type Name Format der Nachricht
Serial.print(" Type: ");Serial.println(record.getType()); // will be "" for TNF_EMPTY
int payloadLength = record.getPayloadLength();
byte payload[payloadLength];
record.getPayload(payload);
// Print the Hex and Printable Characters
Serial.print(" Payload (HEX): ");
PrintHexChar(payload, payloadLength);
String payloadAsString = "";
for (int c = 0; c < payloadLength; c++) {
payloadAsString += (char)payload[c];
}
payloadAsString.trim();
nachricht += payloadAsString;
// nachricht = nachricht + payloadAsString;
Serial.println(payloadAsString.length(),DEC); //43
Serial.println(nachricht.length(),DEC); //43
Serial.print(" Nachricht: ");
Serial.println(nachricht);
Serial.print(" Payload (as String): ");
Serial.println(payloadAsString);
// id is probably blank and will return ""
String uid = record.getId();
if (uid != "") {
Serial.print(" ID: ");Serial.println(uid);
}
}
}
}
delay(3000);
}
Zum Programmieren nehme ich die Arduino Umgebung V1.8.8. Der String nachrichten funktioniert ansonsten aber er wird nicht angezeigt mit Serial.print , dass ist sehr verwirrend.