INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Daten von File auf SD Card (formatiert) schreiben+lesen u.a.m.
16.02.2015, 10:49 (Dieser Beitrag wurde zuletzt bearbeitet: 16.02.2015 10:52 von Bitklopfer.)
Beitrag #17
RE: Daten von File auf SD Card (formatiert) schreiben+lesen u.a.m.
(16.02.2015 09:50)HaWe schrieb:  .....
die Daten lauten:

p=1 q=2 x=3.141593 y=987.654
p=2 q=4 x=4.22 y= 2.345
p=3 q=6 x=8.44 y=3.456

...

..ähm ist das wirklich eine 1:1 Kopie aus dem Texteditor wenn du deinen Datenfile mit Notepad geöffnet hast ?
Also mir wäre das zu unstrukturiert um das wieder auseinanderzuklamüsern.
Was ich dir oben gezeigt habe ist eine 1:1 Kopie aus meinem Datenfile und wie du siehst steht da alles am gleichen Platz in der Zeile. Also ein leichtes das wieder umzuwandeln. Und da ist es wurschtegal wie das generiert wurde.
Und wenn du eindeutige Feldtrenner verwendest kannst diese Daten auch problemlos in Excel oder Staroffice einlesen weil die auch die Feldtrenner abfragen beim importieren. Aber bei dem Durcheinander was du da zeigst wird das kaum gehen.
lg
bk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.02.2015, 11:21 (Dieser Beitrag wurde zuletzt bearbeitet: 16.02.2015 15:37 von HaWe.)
Beitrag #18
RE: Daten von File auf SD Card (formatiert) schreiben+lesen u.a.m.
nein, das sind nur die Daten als Beispiele, so wie sie vorhanden sein können.

tatsächlich habe ich arrays, z.B.
int16_t p[200], q[200];
float x[200], y[200];

und nun will ich die von p[0], q[0], x[0], y[0]
bis
p[199], q[199], x[199], y[199]

erst in eine Datei speichern und dann wieder genau so zurücklesen.

Aber NICHT in Excel!!

Sondern im Sketch-Programm!!

Der Sinn: Bei Programmende werden diese Daten auf SD gesichert, dann wird der Arduino ausgeschaltet. Bei Programmneustart werden sie neu eingelesen und in die Programm-Variablen zurückübertragen.

Daher interessiert mich, wie ich diese Datenketten, wenn sie auf der SD im File vorliegen, wieder per Sketch zurückkonvertieren und dann als Variablen neu verwenden kann!

Du hast mir aber noch gar nicht erklärt, wie bei den Komma-getrennten Daten das Zurücklesen und Zurückkonvertieren mit Sketch funktioniert!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.02.2015, 17:09 (Dieser Beitrag wurde zuletzt bearbeitet: 16.02.2015 22:08 von HaWe.)
Beitrag #19
RE: Daten von File auf SD Card (formatiert) schreiben+lesen u.a.m.
habe nun Sketch 1.6 installiert.

Die schlechten Nachrichten:

1.) jetzt habe ich den selben init-Fehler auch mit dem Due !! Sad
2.) scanf ergibt völlig falsche Werte !! Sad
3.) Serial.print erzeugt bei dem string einen unbegründeten Zeilenumbrauch Sad

Die guten Nachrichten:
1.) Serial erlaubt formatierte float-Ausgabe auch ohne Patch! Smile
2.) atoi und atof konvertieren korrekt aus dem SD-File-String Smile
3.) die Ausgabe mit sprintf erfolgt automatisch mit allen Dezimalstellen vor und nach dem Komma!

der Code:
Code:
/*
  SD card read/write

This example shows how to read and write data to and from an SD card file
The circuit:
* SD card attached to SPI bus as follows:
** MOSI - pin 11
** MISO - pin 12
** CLK - pin 13
** CS - pin 4

created   Nov 2010
by David A. Mellis
modified 9 Apr 2012
by Tom Igoe

This example code is in the public domain.

*/

#include <SPI.h>
#include <SD.h>

#define SD_CSpin 4

File myFile;
char fname[64];

char sbuf[64];
char sdata[128];
char cln[]="                    ";



void setup()
{
  pinMode(SD_CSpin, OUTPUT);  
  
  Serial.begin(9600);
  
  sprintf(sbuf,"#: SD Initializing...");
  Serial.println(sbuf);
  // CS is pin 4. It's set as an output by default.


  while(!SD.begin(SD_CSpin) ) {
    sprintf(sbuf,"#: ...SD init failed");
    Serial.println(sbuf);
    delay(1000);
  }
  
  sprintf(sbuf,"#: ...SD OK !          ");
  Serial.println(sbuf);

  sprintf(fname,"test.txt");
  
  if (SD.exists(fname) ) {
    sprintf(sbuf,"#: %s exists     ",fname);
    Serial.println(sbuf);
    sprintf(sbuf,"#: Removing %s      ",fname);
    Serial.println(sbuf);
    SD.remove("test.txt");
    // removed: success ?
    if (SD.exists(fname) ) {
       sprintf(sbuf,"#: %s  exists     ",fname);
       Serial.println(sbuf);  
    }
    else {
       sprintf(sbuf,"#: %s  N/A     ",fname);
       Serial.println(sbuf);
     }
  }
  
  
  
  // open the file. note that only one file can be open at a time,
  // so you have to close this one before opening another.
  int16_t  p, i, cnt=0;
  float    x;
  
  myFile = SD.open(fname, FILE_WRITE);
  
  if (myFile) {
    // if the file opened okay, write to it, then close file:
    sprintf(sbuf,"#: Writing string to %s ",fname);
    Serial.println(sbuf);
    
    // write data to file
    sprintf(sdata, "%d",1);
    myFile.println(sdata);
    Serial.println(sdata);
    sprintf(sdata, "%d", 2);
    myFile.println(sdata);
    Serial.println(sdata);
    sprintf(sdata, "%f", PI);
    myFile.println(sdata);
    Serial.println(sdata);
    sprintf(sdata, "%f", 987.654);
    myFile.println(sdata);
    Serial.println(sdata);
        
    
    // close the file:
    myFile.close();
    sprintf(sbuf,"#: %s closed.   \n",fname);
    Serial.println(sbuf);
  }  
  else {
    // if the file didn't open, print an error:
    sprintf(sbuf,"#: error opening %s   ",fname);
    Serial.println(sbuf);
  }
  

  // re-open the file for reading:
  myFile = SD.open(fname);
  if (myFile) {
    sprintf(sbuf,"#: reading %s ",fname);
    Serial.println(sbuf);

    // read from the file until there's nothing else in it:
    i=0;
    cnt=1;
    strcpy(sdata, "\0");
    
    while (myFile.available()) {
      sdata[i]=myFile.read() ;
      if(sdata[i] == '\n')   {      // end of string: CR
         sdata[i]  = '\0';          // Null-Terminierung ??    
         Serial.print(cnt); Serial.println(": ");
        
         Serial.print(sdata);       Serial.println("                    // Ausgabe als String");
        
         if(cnt<3) {
           p=atoi(sdata);           // 1+2: Ausgabe als Integer Zahl
           Serial.print(p);         Serial.println("                    // Ausgabe direkt als Zahl");
           sprintf(sbuf,"%d",p);
           Serial.print(sbuf);      Serial.println("                    // Ausgabe als formatierte Zahl");
         }
         else {
           x=atof(sdata);           // 3+4: Ausgabe als float-Zahl
           Serial.print(x);         Serial.println("                    // Ausgabe direkt als Zahl");
           sprintf(sbuf,"%f",x);
           Serial.print(sbuf);      Serial.println("                    // Ausgabe als formatierte Zahl");
         }
         ++cnt;
         i=0;
         strcpy(sdata, "\0");
      }
      else ++i;
    }
    // close the file:
    myFile.close();        
    sprintf(sbuf,"#: %s closed.   \n",fname);
    Serial.println(sbuf);
  } else {
    // if the file didn't open, print an error:
    sprintf(sbuf,"#: error opening %s   ",fname);
    Serial.println(sbuf);

  }
}

void loop()
{
  // nothing happens after setup
}


die Serial-Ausgabe:
Code:
#: SD Initializing...
#: ...SD init failed
#: ...SD OK !          
#: test.txt exists    
#: Removing test.txt      
#: test.txt  N/A    
#: Writing string to test.txt
1
2
3.141593
987.654000
#: test.txt closed.  

#: reading test.txt
1:
1
                    // Ausgabe als String
1                    // Ausgabe direkt als Zahl
1                    // Ausgabe als formatierte Zahl
2:
2
                    // Ausgabe als String
2                    // Ausgabe direkt als Zahl
2                    // Ausgabe als formatierte Zahl
3:
3.141593
                    // Ausgabe als String
3.14                    // Ausgabe direkt als Zahl
3.141593                    // Ausgabe als formatierte Zahl
4:
987.654000
                    // Ausgabe als String
987.65                    // Ausgabe direkt als Zahl
987.653992                    // Ausgabe als formatierte Zahl
#: test.txt closed.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.02.2015, 19:50 (Dieser Beitrag wurde zuletzt bearbeitet: 16.02.2015 19:50 von HaWe.)
Beitrag #20
RE: Daten von File auf SD Card (formatiert) schreiben+lesen u.a.m.
update der Vollständigkeit halber auch hier:
der obige jetzt optimierte Code läuft auch unter 1.5.8, mit lib.c float patch, und zusätzlich ist die SD Karte stabiler und die Srial-Ausgabe sogar besser (kein ungewollter Zeilenvorschub).

Ich bleibe also bei 1.5.8 plus patch.

Leider kann ich die 1.6.0 Bugs wegen der Blödk**** dort nicht nicht an Arduino berichten, Wink
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Daten per PHP an MYSQL übergeben ArduM0 4 386 09.08.2017 19:52
Letzter Beitrag: Bitklopfer
  RS485 Modbus lesen und Ladegerät regeln Stromsparer 18 1.516 18.07.2017 19:09
Letzter Beitrag: Binary1
  Daten von Multicast Adresse empfangen Stromsparer 4 299 18.07.2017 12:59
Letzter Beitrag: Stromsparer
  Anzeige von Daten FreDicnc 9 563 24.06.2017 11:09
Letzter Beitrag: FreDicnc
  Firmata (Daten senden an den Arduino und empfangen vom Arduino) comfan 6 830 29.04.2017 14:29
Letzter Beitrag: hotsystems
  Can-Bus Shield ok, aber keine Daten Clubsport 54 4.026 02.04.2017 22:28
Letzter Beitrag: Bitklopfer
  Daten auf der I2C Schnittstelle Franz54 2 299 15.03.2017 21:57
Letzter Beitrag: Franz54
Rainbow File geht nicht zum compilieren!!!! Jocky 7 460 19.02.2017 20:01
Letzter Beitrag: Binatone
  POP 3 Mails lesen Agotto 1 321 19.02.2017 14:44
Letzter Beitrag: rkuehle
  Seriell Daten senden / empfangen mi ProMini Maxel 4 921 13.02.2017 12:29
Letzter Beitrag: Tommy56

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste