char array zusammensetzen

Hallo,

ich empfange seriell eine 6-stellige Zahl. Die ersten 3 Ziffern entsprechen einem LCD-Text, die letzten 3 Ziffern entsprechen einem Sensorwert. Es gibt ca 75 verschiedene LCD-Texte.

Ich möchte bei Eingang von "001123" oder "075456" ein char array erstellen lassen, wie: Büro 123 Keller 456

Der gesamte Text "Keller 456" soll ein einem char array gespeichert werden, bis die nächste Zahl eintrifft. Der Text wird inkl. Wert max 16 Stellen lang sein, bei meinen Versuchen habe ich es mit char Text[17] definiert.

Das Zerlegen der Zahl ist kein Problem, aber wie kann ich in ein char array den Text "Keller " schreiben und den Wert anhängen?

Musst du das wirklich in einem Array abspeichern? Du kannst das doch auch in zwei Schritten direkt auf das LCD schreiben

Ja. Es werden immer 4 Zeilen gesammelt und dann zusammen an Blynk gesendet: Blynk.virtualWrite(V1, zeile1); Blynk.virtualWrite(V2, zeile2); Blynk.virtualWrite(V3, zeile3); Blynk.virtualWrite(V4, zeile4);

Momentan fällt mir nur ein:

if (textcode = 075){ char Text[17] = "Keller "; }

Das 75 Mal und den Wert Zeichen für Zeichen ans Ende setzen. Aber ich dachte an was "komfortableres".

Du suchst strcpy und strcat.

Gruß Tommy

Mit strcat bekomme ich immer:

invalid conversion from ‘char’ to ‘char*’ [-fpermissive]

Der letzten Versuche waren:

strcat(Text, "Keller ");
bzw.
strcat(Text, "Keller ");
bzw.
strcat(Text[17], "Keller ");

Alles erfolglos :frowning:

Du solltest schon verstehen wie man Arrays und char Arrays verwendet und nicht nur willkürlich Code eintippen bis etwas geht. Gerade hier ist nicht alles was compiliert auch richtig

Aber da wird noch viel mehr falsch sein. z.B. hier:

 if (textcode = 075)

1.) = ist eine Zuweisung und kein Vergleich 2.) Zahlen die mit 0 Anfangen sind Oktal statt Dezimal

@TO:Poste bitte ganze Sketche und nicht nur Fragmente.

Gruß Tommy

geraten:

/* https://forum.arduino.cc/index.php?topic=648470.0
  Ich möchte bei Eingang von "001123" oder "075456" ein char array erstellen lassen, wie:
  Büro 123
  Keller 456
*/

char received[7];
char newText[20];

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  // Eingabe
  strcpy(received, "001123"); // Simulation daten empfangen
  // Verarbeitung
  if (!strncmp(received, "001", 3)) strcpy(newText, "Buero ");
  else if (!strncmp(received, "456", 3)) strcpy(newText, "Keller ");
  else strcpy(newText, "unknown ");
  strcat(newText, received + 3);
  // Ausgabe
  Serial.println(received);
  Serial.println(newText);
}

void loop() {
  // put your main code here, to run repeatedly:
}

Vorsicht. Du hast den Null-Terminator nicht berücksichtigt

noiasca: geraten:

Gut geraten - und danke, damit komme ich weiter.

Ich hatte selbst vorher schomal

strcpy(newText, "Keller ");

probiert, gab immer 7 aus. Eben sah ich dann, dass die Hardware nicht richtig angeschlossen war und somit der Programmteil nicht ausgeführt wurde und die 7 kam aus einer anderen Testausgabe im Programm.