Go Down

Topic: Text wird doppelt auf MicroSD Card gespeichert (Read 784 times) previous topic - next topic

lgrube96

Dec 15, 2012, 09:40 pm Last Edit: Dec 15, 2012, 09:45 pm by lgrube96 Reason: 1
Hallo,

ich melde mich auch mal nach etwas längerer Zeit wieder zu Wort.
Und zwar würde ich gerne ein paar Daten auf die MicroSD Card auf meinem Ethernet shield ablegen !
Erstmal habe ich ein Beispiel aus der SD library ausprobiert !
Und zwar folgendes (ReadWrite):
Code: [Select]

#include <SD.h>

File myFile;

void setup()
{
// Open serial communications and wait for port to open:
 Serial.begin(9600);
  while (!Serial) {
   ; // wait for serial port to connect. Needed for Leonardo only
 }


 Serial.print("Initializing SD card...");
 // On the Ethernet Shield, CS is pin 4. It's set as an output by default.
 // Note that even if it's not used as the CS pin, the hardware SS pin
 // (10 on most Arduino boards, 53 on the Mega) must be left as an output
 // or the SD library functions will not work.
  pinMode(10, OUTPUT);
 
 if (!SD.begin(4)) {
   Serial.println("initialization failed!");
   return;
 }
 Serial.println("initialization done.");
 
 // open the file. note that only one file can be open at a time,
 // so you have to close this one before opening another.
 myFile = SD.open("test.txt", FILE_WRITE);
 
 // if the file opened okay, write to it:
 if (myFile) {
   Serial.print("Writing to test.txt...");
   myFile.println("testing 1, 2, 3.");
   // close the file:
   myFile.close();
   Serial.println("done.");
 } else {
   // if the file didn't open, print an error:
   Serial.println("error opening test.txt");
 }
 
 // re-open the file for reading:
 myFile = SD.open("test.txt");
 if (myFile) {
   Serial.println("test.txt:");
   
   // read from the file until there's nothing else in it:
   while (myFile.available()) {
       Serial.write(myFile.read());
   }
   // close the file:
   myFile.close();
 } else {
   // if the file didn't open, print an error:
   Serial.println("error opening test.txt");
 }
}

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


An sich funktioniert alles, aber der Text (testing 1, 2, 3.) wird in dem Text dokument zweimal hintereinander gespeichert !?
Also nicht nur
Quote
testing 1, 2, 3.
, sondern
Quote
testing 1, 2, 3.
testing 1, 2, 3.
Woran liegt das ? Habe ich irgendetwas übersehen?

Grüße
Lorenz

uwefed

2 mal gespeichert oder 2 mal am Terminal ausgedruckt?
Grüße Uwe


jurs


Woran liegt das ? Habe ich irgendetwas übersehen?


Hast Du die SD-Karte in einen Kartenleser am PC getan und nachgeschaut?

Entsprechend dem Code wird der Text:

- Einmal in die Datei geschrieben und über Serial ausgegeben.
- Einmal aus der Datei gelesen und über Serial ausgegeben.

D.h. im seriellen Monitor erscheint der Text zweimal: Einmal beim Schreiben und einmal beim Lesen aus der Datei. Aber in der Datei sollte er nur einmal enthalten sein.



lgrube96

Ja die MicroSD Card habe ich bereits mit einem externen Lesegerät ausgelesen !
Aber dort wird in dem Text Dokument (TEXT) der "Text" (testing 1, 2, 3.) doppelt untereinander gespeichert !

Ich habe hier noch mal das aus dem seriellen Monitor:
Code: [Select]
Initializing SD card...initialization done.
Writing to test.txt...done.
test.txt:
testing 1, 2, 3.
testing 1, 2, 3.


Und auf der SD Card wird folgendes gespeichert (hatte ich ja schon oben):
Quote
testing 1, 2, 3.
testing 1, 2, 3.


Ich weiß absolut nicht woran das liegen kann, bleibt mir bisher unerklärlich ?!

Grüße
Lorenz

michael_x

Und wie oft ist der Test schon gelaufen ?

lgrube96

Ich habe das immer nur einmal ausprobiert, also den seriell monitor geöffnet, dann wurde ja dieser Text auf der Karte gespeichert. Anschließend habe ich dann die SD card in das Lesegerät getan und geguckt was gespeichert wurde. Zum Schluss habe ich die Datei dann wieder entfernt !
Ich hoffe mal das ich die Frage von dir richtig verstanden habe...!

michael_x


Ich hoffe mal das ich die Frage von dir richtig verstanden habe...!

Ja, hast du wohl ;)
Mehr als "kann nur ein saublöder Fehler sein" ist mir nicht eingefallen.

Ahem, steck die Karte erst rein, wenn der SerialMonitor schon läuft und gemeckert hat dass die Initilaisierung nicht geht,  und drück dann nur einmal Reset ;) 

lgrube96

Gut ;)
Jawohl ! Es funktioniert ! Vielen vielen Dank ! :)
Hätte nie gedacht das das der Fehler ist !
Aber warum ist das so "umständlich" gemacht ?

Grüße
Lorenz

uwefed

#9
Dec 16, 2012, 01:16 pm Last Edit: Dec 16, 2012, 01:18 pm by uwefed Reason: 1
Der Sketch läuft los, wenn der Arduino Strom bekommt und schreibt auf die SD.
Dann wenn Du den Serial Monitor öffnest dann resetiert der Arduino und schreibt nochmal af die SD.
Als Kontrolle drücke nach dem öffnen des Monitors  1 mal auf die Resettaste des Arduino. So müßtest Du 3 mal den Text auf der SD-Karte haben.

Der seriele Monitor resetiert den Arduino damit der Sketch von Anfang an startet.

Grüße Uwe

lgrube96

Achso ist das ! Was neues dazu gelernt ;) Wusste ich vorher noch gar nicht :/
Ja stimmt, da wird der "Text" 3 mal hintereinander gespeichert !

Nochmal vielen Dank an alle !

Grüße
Lorenz

Go Up