Hallo Leute,
ich bin gerade dabei die Daten aus dem EEPROM direkt auf die SDCard zu schreiben.
Nur aus irgendeinen Grund will das ganze nicht so wie ich will.
Er legt die Datei a,. schreibt aber keine Daten. Muss ich beim EEPROM irgendwas zusätzlich beachten?
Oder muss ich hier evtl. den Process sperren?
Ich würde mir gerne das umkopieren der Daten ins RAM sparen.
Thorsten
ich bin gerade dabei die Daten aus dem EEPROM direkt auf die SDCard zu schreiben.
Nur aus irgendeinen Grund will das ganze nicht so wie ich will.
Er legt die Datei a,. schreibt aber keine Daten. Muss ich beim EEPROM irgendwas zusätzlich beachten?
Oder muss ich hier evtl. den Process sperren?
Code
//---------------------------------------------------------------
// Speichern Config
procedure Save_Cfg( inFileName : string[8]);
var
wResBlockWrite : Word;
dosTime, dosDate : word;
CfgBytesWritten : longword;
CfgPointer : pointer;
begin
sdAktive(); // Timer für SD Anzeige
// erzeuge Datum und Zeit für Datei
dosTime := F16_StrToTime( RTCZeitBlock.strzeit);
dosDate := F16_StrToDate( RTCZeitBlock.strdatum );
// Dateiname erzeugen
//DateiNameCfg := inFileName+'.cfg';
DateiNameCfg := 'boot.cfg';
// Pfad setzen
CfgDir := 'para';
F16_FileAssign(Cfg_Datei, CfgDir, DateiNameCfg);// Handle mit FileNamen verknüpfen
if F16_FileExist(CfgDir, DateiNameCfg,faAnyFile) then
F16_FileAppend(Cfg_Datei); // vorhandene Datei öffnen
SD_Error := 201; DebugOut('201');
else // File Exist
//Create_New_File(DosTime, DosDate);
if not F16_FileCreate(CfgDir, DateiNameCfg, [faArchive], DosTime, DosDate,0) then
SD_Error := 207; DebugOut('207');
endif;
SD_Error := 202; DebugOut('202');
endif; // File Exist
// Schreibe CFG
CfgPointer:= @Cfg1; // ziehe Pointer für Start vom EEPROM
F16_BlockWrite (Cfg_Datei, EEPromPtr(CfgPointer), 4032 ,wResBlockWrite );
// F16_BlockWrite (Cfg_Datei, @WebBuf, 512 ,wResBlockWrite );
CfgBytesWritten:= F16_FileSizeH(Cfg_Datei); //Anzahl der Datenrecords im File
DebugOut('Bytes im .CFG: ' +LongToStr(CfgBytesWritten)+ ' Res:'+IntToStr(wResBlockWrite));
if not F16_FileClose(Cfg_Datei) then // File schließen
SD_Error := 204; DebugOut('204');
endif; // CloseFile
if not F16_FileSetDate(CfgDir, DateiNameCfg, DosTime, DosDate) then // TimeStamp
SD_Error := 205; DebugOut('205');
endif; // FileSetDate
if not F16_FileSetAttr(CfgDir, DateiNameCfg, [faArchive]) then
SD_Error := 206; DebugOut('206');
endif; // FileSetAttr
end Save_Cfg;
// Speichern Config
procedure Save_Cfg( inFileName : string[8]);
var
wResBlockWrite : Word;
dosTime, dosDate : word;
CfgBytesWritten : longword;
CfgPointer : pointer;
begin
sdAktive(); // Timer für SD Anzeige
// erzeuge Datum und Zeit für Datei
dosTime := F16_StrToTime( RTCZeitBlock.strzeit);
dosDate := F16_StrToDate( RTCZeitBlock.strdatum );
// Dateiname erzeugen
//DateiNameCfg := inFileName+'.cfg';
DateiNameCfg := 'boot.cfg';
// Pfad setzen
CfgDir := 'para';
F16_FileAssign(Cfg_Datei, CfgDir, DateiNameCfg);// Handle mit FileNamen verknüpfen
if F16_FileExist(CfgDir, DateiNameCfg,faAnyFile) then
F16_FileAppend(Cfg_Datei); // vorhandene Datei öffnen
SD_Error := 201; DebugOut('201');
else // File Exist
//Create_New_File(DosTime, DosDate);
if not F16_FileCreate(CfgDir, DateiNameCfg, [faArchive], DosTime, DosDate,0) then
SD_Error := 207; DebugOut('207');
endif;
SD_Error := 202; DebugOut('202');
endif; // File Exist
// Schreibe CFG
CfgPointer:= @Cfg1; // ziehe Pointer für Start vom EEPROM
F16_BlockWrite (Cfg_Datei, EEPromPtr(CfgPointer), 4032 ,wResBlockWrite );
// F16_BlockWrite (Cfg_Datei, @WebBuf, 512 ,wResBlockWrite );
CfgBytesWritten:= F16_FileSizeH(Cfg_Datei); //Anzahl der Datenrecords im File
DebugOut('Bytes im .CFG: ' +LongToStr(CfgBytesWritten)+ ' Res:'+IntToStr(wResBlockWrite));
if not F16_FileClose(Cfg_Datei) then // File schließen
SD_Error := 204; DebugOut('204');
endif; // CloseFile
if not F16_FileSetDate(CfgDir, DateiNameCfg, DosTime, DosDate) then // TimeStamp
SD_Error := 205; DebugOut('205');
endif; // FileSetDate
if not F16_FileSetAttr(CfgDir, DateiNameCfg, [faArchive]) then
SD_Error := 206; DebugOut('206');
endif; // FileSetAttr
end Save_Cfg;
Ich würde mir gerne das umkopieren der Daten ins RAM sparen.
Thorsten