Warum kann der String nicht ausgegeben werden?

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 :confused:

Hallo,

warum keine Ausgabe erfolgt, kann ich mir angesichts Deines Code-Schnipsels auch nicht erklären. Zeige am besten mal den vollständigen Sketch.

Gruß

Gregor

Hier der komplette Code:

#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.