Hallo,
ich übertrage Messwerte von einem Arduino zum anderen. Dann lese ich den String aus und übergebe ihn an eine Funktion zum zerlegen:
void handleR01data(String pStr)
{
Serial.println("aus Funktion");
Serial.println(pStr);
do
{
commaPosition = pStr.indexOf(';');
if(commaPosition != -1)
{
Serial.println( pStr.substring(0,commaPosition));
pStr = pStr.substring(commaPosition+1, pStr.length());
}
else
{ // here after the last comma is found
if(pStr.length() > 0)
Serial.println(pStr); // if there is text after the last comma,
// print it
}
}
while(commaPosition >=0);
}
Dann bekomme ich auch schön alle werte einzeln gelistet. Das geht soweit.
Aber wie kann ich mir nun die Werte in eine Variable schreiben um damit weiter zu arbeiten?
Vielen Dank für Eure Hilfe
Die Sache ist gelöst zwar nicht mit dem Vorschlag von Kalli (danke dafür). Ich habe mich etwas in die Irre leiten lassen. Den ursprünglich hatte ich diese Lösung schon gehabt. Aber die brachte falsche Ergebnisse. Das lag aber daran dass ich nicht immer richtig den Anfang des Strings gefunden hatte. Obwohl ich auf den Start getriggert hatte. Als ich die Lösung von Kalli versuchte bekam ich die Fehler auch.
Was habe ich nun gemacht?
Ich habe Dem String noch ein Endzeichen hinzugefügt und schon geht alles.
Man muss halt einfach nur über Probleme reden
void handleR01data(String msg)
{
if ((msg.startsWith("START")) and (msg.endsWith("END")))
{
int index = 0;
do
{
commaPosition = msg.indexOf(';');
if(commaPosition != -1)
{
//Serial.println( msg.substring(0,commaPosition));
myArray[index++] = msg.substring(0,commaPosition);
msg = msg.substring(commaPosition+1, msg.length());
}
else
{ // here after the last comma is found
if(msg.length() > 0)
myArray[index++] = msg;
keller_t01 = myArray[1];
keller_t02 = myArray[2];
keller_h01 = myArray[3];
eg_t01 = myArray[4];
eg_h01 = myArray[5];
og_t01 = myArray[6];
og_h01 = myArray[7];
dg_h01 = dht.readHumidity();
dg_t01 = dht.readTemperature();
luftdruck_01 = myArray[8];
}
}
while(commaPosition >=0);
}