Forum: Mikrocontroller und Digitale Elektronik Arduino - .CSV von SD Zeilenweise auslesen?


von Georg M. (georg_m)


Lesenswert?

Servus allesammt, :)

ich bin auf der Suche nach einer Möglichkeit eine .CSV Datei Zeilenweise 
über meinen Arduino Mega 2560 auszulesen.
Das zeilenweise schreiben als String klappt super.
Ich benutze den SD-Socket vom Arduino Mega Shield von Watterott.
http://www.watterott.com/de/Arduino-Mega-mSD-Shield
Die SD-Karte ist FAT16 formatiert.

Alle Daten werden als Strings in folgender Form gespeichert.
Zeile 1: A1 , B1 , C1 , D1
Zeile 2: A2 , B2 , C2 , D2
usw.

Bei den gespeicherten Werten handelt es sich um umpfangene Bytes in 
DEC-Form.
Jetzt würde ich gerne einzelne Zeilen wieder auslesen.

Hat da jemand schon Erfahrung und könnte mir Helfen?

von Karl H. (kbuchegg)


Lesenswert?

Georg M. schrieb:

> Jetzt würde ich gerne einzelne Zeilen wieder auslesen.

Du hast eine Funktion, die 1 Byte von dem SD-Stream einlist.
Dann wirst du dir wahrscheinlich als erstes mal eine Funktion bauen 
müssen, die dir eine komplette Zeile vom Stream einliest.

Was ist eine Zeile?
Eine Zeile ist eine Abfolge von Bytes, an deren Ende ein \n steht. D.h. 
du liest solange Bytes ein, solange welche vorhanden sind UND solange 
das Zeichen kein \n war. Das jeweils gelesene Byte fügst du zu deinem 
String hinzu, in dem die gelesene Zeile entsteht. Ist eine der beiden 
Bedingungen nicht mehr erfüllt, dann hast du eine komplette Zeile 
gelesen und diese als String im Speicher zusammengebaut. Mit dem String 
verfährst du dann weiter und zerlegst ihn entsprechend.

Alternativ kann man auch das Lesen bzw. Zerlegen in Einzelteile auch in 
einem Aufwasch machen, was oft der Speicherbelastung zu Gute kommt.
Aber als Anfänger würde ich dir empfehlen, die beiden Aufgabenstellungen 
erst mal voneinander zu trennen.

Die Standard-C Funktion zum Einlesen einer Zeile sieht beispielsweise im 
Interface so aus

char* fgets( FILE* stream, char* buffer, size_t sizeOfBuffer )

Dein Job ist es jetzt, eine gleichwertige Funktion für deine SD-Library 
zu schreiben.

>
> Hat da jemand schon Erfahrung und könnte mir Helfen?

von Georg M. (georg_m)


Lesenswert?

Danke Karl Heinz für die gute Erklärung :)
Werd mich gleich drann machen und das neu Gelernte umsetzen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.