Ich habe in meinem Sketch folgendes enthalten (nur auszugsweise zum besseren Verständnis):
//deklaration
.....
char strasse[30]="";
char strasseOhne[30]="";
......
void setup()
{
.......
}
void loop()
{
.....
finder.getString(">","<",strasse,30);
char* strasseOhne = leerErsetzen(strasse); //Sprung ins Unterprogramm leerErsetzen mit Übergabe des Strings
Serial.println(strasseOhne); // veränderter String wird ordnungsgemäß im SM angezeigt
.......
dsplMsgSB(); //Aufruf des UP zur Anzeige
...........
}
// ******************** UP Entfernen/Ersetzen der Leerzeichen ********************
char* leerErsetzen(char zeichenKette[30]) // Leerzeichen im Straßennamen/Ort ersetzen
{
//Serial.print(zeichenKette);
int leseZeiger = 0;
int schreibZeiger = 0;
for(leseZeiger = 0; leseZeiger<31;leseZeiger++)
{
if (zeichenKette[leseZeiger] != 0x20)
{
zeichenKetteModifiziert[schreibZeiger++]=zeichenKette[leseZeiger];
}
else
{
zeichenKetteModifiziert[schreibZeiger++] = '%';
zeichenKetteModifiziert[schreibZeiger++] = '2';
zeichenKetteModifiziert[schreibZeiger++] = '0';
}
}
schreibZeiger++;
zeichenKetteModifiziert[schreibZeiger] = '\n';
//Serial.print(zeichenKetteModifiziert);
return(zeichenKetteModifiziert);
}
//********* Erstellen der Nachricht für Squeezebox-Server ************************
void dsplMsgSB()
{
snprintf(SBox, 180, "GET /status?p0=display&p1=neuester%%20Benzinpreis:%%20&p2=%d,%d%d%%20%s,%%20%s&p3=30&player=* HTTP/1.0",u2,u3,v,brand,strasseOhne);
...........
}
Soweit die wesentlichen Bestandteile. Der komplette Sketch liegt als Anhang bei. Er ist noch nicht geordnet, deshalb bittte ich Nachsicht zu üben.
Beim Kompilieren gibt es keine Fehlermeldung. Das Problem besteht darin, dass im UP dsplMsgSB() in dem Parameter 'strasseOhne' nichts mehr enthalten ist und somit die Strasse nicht angezeigt wird. Ich wundere mich, dass als Rückgabe aus dem UP leerErsetzen der Parameter zeichenKetteModifiziert nur als Zeiger (char*) ohne Fehlermeldung kompiliert wird.
Ändere ich die Rückgabe und char* strasseOhne in char, bekomme ich eine Fehlermeldung invalid conversion from 'char*' to 'char' in der letzten Zeile des UP leerErsetzen().
Offensichtlich wird im UP mit Zeigern gearbeitet, aber ich sehe nicht, wo ich einen Denkfehler mache. Kann mir jemand auf die Sprünge helfen? Nicht umsonst steht wohl in der Referenz "Pointers are one of the more complicated subjects for beginners in learning C".
Gruß Eberhard
V105_Benzinpreis_dspl_Squeezebox.ino (7.58 KB)