Go Down

Topic: CSV zerlegen (Read 495 times) previous topic - next topic

Hallo,
ich übertrage Messwerte von einem Arduino zum anderen. Dann lese ich den String aus und übergebe ihn an eine Funktion zum zerlegen:

Code: [Select]
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

Kalli

#1
Apr 01, 2013, 06:11 pm Last Edit: Apr 01, 2013, 06:47 pm by Kalli Reason: 1
Hallo,
ich hatte vor kurzem auch das Problem, übertrage 5 Temp. Werte mit dem nRF24l01 als CHAR.
Die Rückwandlung dann mit

int t[5];
char tmpS[32];

sscanf (tmpS,"%d %d %d %d %d",&t[0],&t[1],&t[2],&t[3],&t[4]);

Gruss Kalli

Vielen Dank Kalli für den Tip
wie generierst Du denn den Datenstrom und wie liest Du ihn ein?
Vielen Dank
Wolfgang

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  :D

Code: [Select]
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);

}

Go Up