Link aus Varialbe und Text zusammensetzen

Hallo Zusammen,

Ich würde gerne einen Link aus Variablen und Text zusammensetzen.

Wie Folgt habe ich mir das vorgestellt:

    for (byte i = 0; i < bufferSize; i++)
        {
          Serial.print(buffer[i] < 0x10 ? " 0" : ",");
          Serial.print(buffer[i], DEC);
     content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : ","));
     content.concat(String(mfrc522.uid.uidByte[i], DEC));
        }

content.toUpperCase();

   char buf[100];
printf(buf, "http://192.168.61.5/tueren/rfid.php?uid=%s ", content);
    http.begin(buf); //HTTP

Nun erscheint folgender Fehler:
cannot pass objects of non-trivially-copyable type ‘class String’ through ‘…’

Kann mir jemand helfen?
Gruss

schnibli:
Kann mir jemand helfen?

Du bist offensichtlich nicht zum ersten Mal hier. Du bist demnach vermutlich kein blutiger Anfänger und kannst sagen, woher die 'content'-Funktion kommt. In der Referenz kommt das nicht vor.

Außerdem könntest Du vor dem Posten von Code-Schnipselchen wenigstens Strg-T drücken.

Gruß

Gregor

Hallo,

Sorry für die Komische Formatierung.

Content ist als String Formatiert
Es geht darum die UID eines RFID Tags an einen Server zu senden:

  String content = "";
  for (byte i = 0; i < bufferSize; i++)
  {
    Serial.print(buffer[i] < 0x10 ? " 0" : ",");
    Serial.print(buffer[i], DEC);
    content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : ","));
    content.concat(String(mfrc522.uid.uidByte[i], DEC));
  }

  content.toUpperCase();
  Serial.println(content);

  HTTPClient http;

  Serial.print("[HTTP] begin...\n");
  char buf[100];
  sprintf(buf, "http://192.168.61.5/tueren/rfid.php?uid=%s ", content.substring(1));
  http.begin(buf); //HTTP

Dies ist Die Error Meldung.

cannot pass objects of non-trivially-copyable type 'class String' through '...'

Ich gehe mal davon aus das ich Irgendwo eine Formatierung vergessen habe :s

Printf mag kein String Objekt.

printf(buf, "http://192.168.61.5/tueren/rfid.php?uid=%s ", content.c_str());

Gruß Fips

Hallo danke für die Hilfe.

@noiasca
Wenn ich wüsste wie dies ginge dan würde ich dies auch machen.
Aber ich kann es nur so gut machen wie ich weis dass es geht xD

So nun habe ich es das es mehr oder weniger läuft:

 for (byte i = 0; i < bufferSize; i++)
  {
    Serial.print(buffer[i] < 0x10 ? " 0" : ",");
    Serial.print(buffer[i], DEC);
    content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? "0" : ","));
    content.concat(String(mfrc522.uid.uidByte[i], DEC));
  }

  content.toUpperCase();
  Serial.println(content);

  HTTPClient http;

  Serial.print("[HTTP] begin...\n");
  char buf[100];
  sprintf(buf, "http://192.168.61.5/tueren/rfid.php?uid=%s", content.c_str());
  http.begin(buf); //HTTP

Jetzt gibt es nurnoch ein problem beim Zusammensetzten von content
Und zwar:
Wenn der RFID Tag an ersten stelle eine Zahl < 10 hat Funktioniert es: 07,216,83,211
Wenn der RFID Tag an erster Stelle eine Zahl >= 10 hat Funktioniert es nicht und die erste Stelle in Content Beinhaltet eine “,” = ,45,244,85,211

schnibli:
Wenn ich wüsste wie dies ginge dan würde ich dies auch machen.
Aber ich kann es nur so gut machen wie ich weis dass es geht xD

Dann bleibt doch gleich beim String Objekt, die Lib arbeitet intern eh damit.

http.begin("http://192.168.61.5/tueren/rfid.php?uid=" + content); //HTTP

Gruß Fips

Danke.

Ja das hab ich auch herausgefunden.

Nur bin ich nicht im Stande das erste “,” zu löschen.
Entweder alle oder keins :o

If ohne else würde ja so Aussehen:

    content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? "0"));

oder seh ich das falsch :confused:

schnibli:
If ohne else würde ja so Aussehen:

    content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? "0"));

oder seh ich das falsch :confused:

Falsch!
Das klappt nicht.

    content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? "0" : ""));

Oder mit if()

Gruß Fips

Da ist das Problem das ich keine "," mehr habe ich benötige jeweils nur das erste nicht.

Der Fehler liegt ja da:
,228,45,83,211
07,216,83,211

Bei Kleinen zahlen wird das erste "," nicht geschrieben und bei grossen schon

schnibli:
Da ist das Problem das ich keine "," mehr habe ich benötige jeweils nur das erste nicht.

Der Fehler liegt ja da:
,228,45,83,211
07,216,83,211

Bei Kleinen zahlen wird das erste "," nicht geschrieben und bei grossen schon

GrußFips