MSP430 - Datein von SD-Karten zeilenweiße auslesen und als Variable speichern

Gast #2360290
Lesenswert?

Hallo zusammen,

ich möchte mit meinem MSP430f5529 Dateien (config.txt) zeilenweiße 
auslesen und die jeweiligen Zeilen als Variabe speichern.

Das soll so aussehen (die Werte in Klammer dienen nur der Illustration):

1. Zeile          1        (Modus)
2. Zeile          100      (Intervall)
3. Zeile          Bsp.     (Stelle)

Diese Werte sollen dann als Variable gespeichert werden damit. Über die 
config.txt werden Einstellungen des mC vorgenommen. In meinem Fall der 
Messmodus, der Messintervall und die Messstelle. Die Datei befindet sich 
auf einer SD-Karte.

Da ich mit C noch sehr am Anfang stehe habe ich nun meine Probleme. Die 
Anbindung des MSP an die SD ist schon vorhanden. Ich kann die config.txt 
anzeigen und deren Inhalt lesen. Mein Problem besteht jetzt darin die 
Zeilen getrennt als Variablen anzulegen.

Habe auch schon mit Google nach einigen Beispielen geschaut aber noch 
nichts passendes gefunden.

In einem Beispielprogramm kann wie bereits erwähnt .txt Dateien auf dem 
LCD anzeigen lassen. Das Problem für mich ist einfach wie ich die 
einzelnen Zeilen als Variable speichern kann um diese später im Programm 
zu benutzen.

Im Beispielprogramm läuft die Anzeige der entsprechenden Datei so ab:

void ActiveFile(void)
{
    uint8_t index = 0, position = 0;
    char screen[136];

    //display first screen
    strncpy(screen, buff + index, 136);

                             //we can fit 136 characters on our screen

    Dogs102x6_clearScreen();
    Dogs102x6_stringDraw(0, 0, screen, DOGS102x6_DRAW_NORMAL);

    while (!buttonsPressed)
    {
        position = Wheel_getPosition();
        if ((position == 7) && (buff[index + LINE_SIZE] != 0))

                                       //scroll down, if possible

        {
            index += 17;

                                       //move screen down one line

            strncpy(screen, buff + index, 136);

                          //we can fit 136 characters on our screen

            Dogs102x6_clearScreen();
            Dogs102x6_stringDraw(0, 0, screen, DOGS102x6_DRAW_NORMAL);
            __delay_cycles(1500000);

                                   //delay for user to see scrolling

        }
        else if ((position <= 1) && (index != 0))

                                          //scroll up, if possible

        {
            index -= 17;

                                         //move screen up one line


            strncpy(screen, buff + index, 136);

                              //we can fit 136 characters on our screen

            Dogs102x6_clearScreen();
            Dogs102x6_stringDraw(0, 0, screen, DOGS102x6_DRAW_NORMAL);
            __delay_cycles(1500000);

                                       //delay for user to see scrolling

        }
    }
}


Die Ansteurung des LCDs ist nicht wichtig, auch die Benutzung des 
Rädchens zum Scrollen ist natürlich für mich Uninteressant. Habe jetzt 
ein wenig meine Bücher gewälzt und finde leider nichts über strncpy, 
bzw. wie ich dies zu Behandeln habe. Nun habe ich das hier mal 
geschrieben (das öffnen der Datei fehlt hier noch):

void load();
{
  char Modus[2]
  char Intervall[4]
  char Stelle[60]

  strncpy(Modus, buff + index, 1);
  strncpy(Intervall, buff + index, 4);
  strncpy(Stelle, buff + index, 60);
.................................................
}

Die Frage ist jetzt durch was ich buff + index ersetzen soll und wie ich 
die Werte dann als Variable speichern kann. Die Werte in der 
Eckigenklammer beschreiben mir ja die Länge der einzelnen Zeilen bzw. 
was davon gelesen werden soll oder? Das selbe gilt dann natürlich auch 
für strncpy oder?

Wie gesagt bin noch am Anfang und habe noch einige Probleme wäre 
wirklich sehr net wenn mir jemand ein paar Tipps geben könnte. Auch für 
Buchtipps wäre ich dankbar, habe zwar schon ein paar Bücher aber so 
richtig wohl fühle ich mich mit diesen noch nicht!

Bin für jede Antwort dankbar!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren