Namen aus RFID Code als char

Hallo zusammen,

ich würde gerne Namen, welche ich auf diverse RFID Karten geschrieben habe über den folgenden Code auslesen. Das auslesen funktioniert, jedoch möchte ich diesen Namen als char an einen MQTT Broker senden, was leider nicht funktioniert.

Kann mir hierzu jemand helfen?

    //Warte, bis RFID-Tag erkannt wird & gelesen wurde.
          while (!mfrc522.PICC_IsNewCardPresent() || !mfrc522.PICC_ReadCardSerial()); {
  
          Serial.println("Tag erkannt!");

          Serial.print(F("Name: "));
            byte buffer1[18];
              block = 4;
              len = 18;

  //------------------------------------------- GET FIRST NAME
  status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, 4, &key, &(mfrc522.uid)); //line 834 of MFRC522.cpp file
  if (status != MFRC522::STATUS_OK) {
    Serial.print(F("Authentication failed: "));
    Serial.println(mfrc522.GetStatusCodeName(status));
    return;
  }

  status = mfrc522.MIFARE_Read(block, buffer1, &len);
  if (status != MFRC522::STATUS_OK) {
    Serial.print(F("Reading failed: "));
    Serial.println(mfrc522.GetStatusCodeName(status));
    return;
  }

  //PRINT FIRST NAME
  for (uint8_t i = 0; i < 16; i++)
  {
    if (buffer1[i] != 32)
    {
      Serial.write(buffer1[i]);
      **// client.publish("Anwesenheit", buffer1[i]);**
    }
  }
  Serial.print(" "); //Abstand zwischen Vor und Nachname.
  

  //---------------------------------------- GET LAST NAME

  byte buffer2[18];
  block = 1;

  status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, 1, &key, &(mfrc522.uid)); //line 834
  if (status != MFRC522::STATUS_OK) {
    Serial.print(F("Authentication failed: "));
    Serial.println(mfrc522.GetStatusCodeName(status));
    return;
  }

  status = mfrc522.MIFARE_Read(block, buffer2, &len);
  if (status != MFRC522::STATUS_OK) {
    Serial.print(F("Reading failed: "));
    Serial.println(mfrc522.GetStatusCodeName(status));
    return;
  }

  //PRINT LAST NAME
  for (uint8_t i = 0; i < 16; i++) {
    Serial.write(buffer2[i] );
**// client.publish("Anwesenheit", buffer2[i]);**
  }


  //----------------------------------------

  Serial.println(F("\nKarte wurde gelesen!\n"));

  delay(1000); //change value if you want to read cards faster

Ein char ist ein einzelnes Zeichen. Falls der Name länger ist, könnte es sein, dass Du ein char-Array brauchst.

Gruß Tommy

las das [i] weg

Wichtig ist, das Du buffer1 (oder eben buffer2) vorher komplett leerst, bevor Du neu beschreibst.
Stichwort: memset

genauer mit 0 (Byte 0, nicht Zeichen '0') auffüllst.

Gruß Tommy

ok, dann darf ich auch: befüllen. :wink: Alles andere ergäbe keinen Sinn.

Ein Auffüllen vom Anfang an würde ich einem Befüllen gleich setzen.

Gruß Tommy

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.