Wegweiser

Titelseite

Gabi

Haus

Elektronik

Mobil

Schweden

Imperium

Dies & Das

Equipment

Projekte

Arduino

Leiterplatten

Barbie

Murmeln

Titelseite

Gabi

Haus

Bernd

Mobil

Schweden

Imperium

Dies & Das

Elektronik / Arduino / Wissenswertes / Stringverarbeitung

Die Situation:

In einem Logger sollen Daten in eine Datei geschrieben werden. Damit nicht alle Daten in eine Datei geschrieben werden, sondern nach einem Reset oder Neustart immer in eine neue Datei, muss für jede Sitzung ein neuer Dateiname kreiiert werden.

Im Beispiel wird ein Zähler mittels Schleife hochgezählt. Der Zählerwert kann natürlich auch z. B. aus dem EEPROM ausgelesen werden.

String string1, string2, string3, string4;
int ZAEHLER;
//++++++++++++++++++++++++++++++++++
void setup()
{
    Serial.begin(9600);
    string1 = String("GPS");
    string2 = String("");
    string3 = String (".TXT");
    string4 = String("");
}
//++++++++++++++++++++++++++++++++++
void loop()
{
    for(ZAEHLER=0;ZAEHLER<110;ZAEHLER++)
    {
        string2=ZAEHLER;
        string4=string1+string2+string3;
        if(ZAEHLER<100){string4=string1+"0"+string2+string3;}
        if(ZAEHLER<10){string4=string1+"00"+string2+string3;}
        Serial.println(string4);       
    }

}

Bei vielen Versuchen, die ich mit der String-Verarbeitung unter der Arduino-IDE 0022 und 1.0.1 gemacht habe, hat es immer wieder Probleme gegeben. So ist darauf hinzuweisen, dass es zwei Arten der String-Verarbeitung gibt: Einmal die “Arduino-Eigene” und die, die sich am Vokabular der Sprache C/C++ orientiert. Die Versuchung, für den geforderten Zweck beides zu mischen, ist sehr groß, führt aber sehr schnell zu sehr merkwürdigem Ergebnissen.   

Beide Arten haben den Nachteil, sehr speicherintensiv, ja geradezu -hungrig zu sein. Dies kann durchaus dazu führen, dass die vom eigentlichen Programm belegten Bereiche unkontrollierbar überschrieben werden. Für das obige Beispiel mag das noch nicht zutreffen, sollten aber weitere und vor allem umfangreichere String-Verarbeitungen dazukommen, ist mit allem zu rechnen.

Sofern nicht unbedingt erforderlich, sollte auf eine String-Verarbeitung verzichtet werden.

.