Array auf SD-Speicherkarte

Termi

Level-2
Beiträge
105
Reaktionspunkte
7
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
vielleicht hat ja einer von euch eine Idee zu meinem Problem:
Ich habe folgendes Array: csv_String: ARRAY [0..59] OF STRING(255), wobei die eingetragene Länge des Strings variiert. Jetzt mochte ich dies Array kompett auf eine SD-Karte speichern. Dazu habe ich folgenden Code

Code:
IF SaveStatus >0 THEN

    CASE SaveStatus OF

    100:  Filename1 :=CONCAT('/media/sd/', INT_TO_STRING (Jahr));   (*Filename z.B. /media/sd/2015/2015-KW_10.csv*)
            Filename1 := CONCAT( Filename1, '/');
            Filename1 := CONCAT( Filename1, INT_TO_STRING (Jahr));
            Filename1 := CONCAT( Filename1,  '-KW_');
            Filename1 := CONCAT( Filename1,INT_TO_STRING(KW));
            Filename1 := CONCAT( Filename1,'.csv');

            FileMode := 'a';
            SaveStatus := 101;

    101:     File_Handle :=SysFileOpen(FileName1, FileMode);
            IF File_Handle > 0 THEN
                SaveStatus :=102;
            END_IF;

    102:     BytesDone:=    SysFileWrite(File_Handle, ADR(csv_String[MINUTE]), LEN(csv_String[MINUTE])); (*writing to file*)
            IF BytesDone = LEN(csv_String[MINUTE]) THEN
                SaveStatus :=103;
            END_IF;

    103:     SysFileClose(File_Handle);
            SaveStatus:=    0;
    END_CASE;

END_IF;

Dieser Code speichert ein Element des Arrays, abhängig vom Inhalter der Variable MINUTE. Soweit so gut und es klappt wunderbar. Ersetze ich jetzt die MINUTE durch eine Laufzeitwariable von 0..59 in eine "For" Schleife dauert der Speichervorgang etwas länger, so dass ich irgenwann die Datei schließe ohne dass alles sauber abgespeichert wurde. Ich rufe die Routine alle 300 ms auf. Wie kann ich das so programmieren, dass alle Datendsätze sicher nacheinander gespeichert werden und dann erst die Datei geschlossen wird?
Ziel der Aktion ist es, die SD-Karte mit "nur" 24 Speichervorgängen pro Tag zu belasten, anstatt mit 1440.

Gruß
Chris
 
Hallo zusammen,
nach einer großen Pause habe ich anschließend eine zufriedenstellende Lösung gefunden. Danke für die Aufmerksamkeit.
Gruß
Chris
 
Zurück
Oben