Forum: Mikrocontroller und Digitale Elektronik MSP430 - Datein von SD-Karten zeilenweiße auslesen und als Variable speichern


von Harald (Gast)


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!

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.