Forum: Compiler & IDEs Variablen beim Starten von SD Karte einlesen


von Michael (Gast)


Lesenswert?

Hallo,

ich möchte von der SD Karte strings einlesen und in Variablen speichern.
Auf der SD Karte gibt es Sprachdateien in Textformat.
Z.B.

Deutsch.txt mit Inhalt

Einschalten
Ausschalten
.
.
.

Englisch.txt

switch on
switch off
.
.
.

Beim Einschalten des Mikrocontrollers wird die im Setup stehende Datei 
gelesen, also z.B. Deutsch.txt.
Jetzt sollen die Variablen mit den strings geladen werden.
Wie stellt man das in C am besten an?

Einfach ein array mit
1
char Texte[40][30];

ist sicher nicht die richtige Lösung.
Ich verwende einen AVR32UC3A1512.

Gruß Michael

von Marius W. (mw1987)


Lesenswert?

Zunächst brauchst du erstmal Funktionen um überhaupt auf das Dateisystem 
der SD-Karte zugreifen zu können. Dann kannst du die Datei ja 
zeilenweise in deine Variable einlesen.

Soweit ich weiß, gibt es im Software-Framework von Atmel schon fast 
alles, was du brauchst.

MfG
Marius

von Michael (Gast)


Lesenswert?

Hallo,

das läuft schon alles, mir ist nur noch nicht klar wie ich die strings 
ablege.
Die strings haben ja unterschiedliche Länge und es ist bestimmt falsch 
ein array mit fester Länge dafür zu benutzen.

von Floh (Gast)


Lesenswert?

Michael schrieb:
> Die strings haben ja unterschiedliche Länge und es ist bestimmt falsch
> ein array mit fester Länge dafür zu benutzen.

Wenn der längste String reinpasst, kann man das schon machen, ist halt 
nicht so speicherschonend.
:-)

von Karl H. (kbuchegg)


Lesenswert?

Michael schrieb:

> Die strings haben ja unterschiedliche Länge und es ist bestimmt falsch
> ein array mit fester Länge dafür zu benutzen.

Im Allgmeinen hättest du recht.
Auf einem kleinen µC hingegen ist das die vernünftigste Lösung. Dort 
willst du nämlich um dynamische Speicherallokierung einen Bogen machen, 
wie der Teufel ums Weihwasser.
Wenn überhaupt, dann reserviert man ein fixes char Array und teilt sich 
das zur Laufzeit selber ein, wie man es braucht. Aber dann hat man 
natürlich zwar auch all die Probleme, die man auch bei komplett 
dynamischer Allokierung hätte (was tun, wenn der Speicher zu Ende ist), 
allerdings in einer etwas abgemilderter Form. Zumindest wird dann der 
Rest des Programmes noch sauber laufen und nicht gleich wegen 
Speichermangel abschmieren.

von Rolf M. (rmagnus)


Lesenswert?

Karl heinz Buchegger schrieb:
> Auf einem kleinen µC hingegen ist das die vernünftigste Lösung. Dort
> willst du nämlich um dynamische Speicherallokierung einen Bogen machen,
> wie der Teufel ums Weihwasser.

Naja, so klein ist der nun auch wieder nicht. Hat immerhin 64k RAM 
eingebaut.

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.