Pages: [1]   Go Down
Author Topic: CSV zerlegen  (Read 453 times)
0 Members and 1 Guest are viewing this topic.
Germany, Rheinhessen
Offline Offline
Newbie
*
Karma: 0
Posts: 23
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Code:
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
Logged

0
Offline Offline
Full Member
***
Karma: 8
Posts: 153
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
« Last Edit: April 01, 2013, 11:47:26 am by Kalli » Logged

Germany, Rheinhessen
Offline Offline
Newbie
*
Karma: 0
Posts: 23
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Germany, Rheinhessen
Offline Offline
Newbie
*
Karma: 0
Posts: 23
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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  smiley-grin

Code:
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);
 
 }
Logged

Pages: [1]   Go Up
Jump to: