mikrocontroller.net

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


Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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
char Texte[40][30];

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

Gruß Michael

Autor: Marius Wensing (mw1987)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Floh (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.
:-)

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rolf Magnus (rmagnus)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.