Re: Absturz bei Dateien >10000 Byte auf SD-Card Kategorie: Programmierung Basic (von Josef - 7.05.2014 9:39) | ||
Als Antwort auf Re: Absturz bei Dateien >10000 Byte auf SD-Card von Max - 7.05.2014 8:23 | ||
| ||
> > > Hallo, > > > ich habe in meinem Projekt eine Protokolldatei in der verschiedene > > > Aktionen dokumentiert werden. > > > Aber leider stürzt mein Programm bei einer DateigröÃ?e von gröÃ?er 10 000 Byte > > > beim Befehl SD_READ_FILE_STATUS ab. > > > Unten habe ich ein kleines Testprogramm welches das Anfügen von Protokolldaten > > > simuliert. > > > GruÃ? Max > > > > > > > > > Es wird die SD_Lib.cc aus der Demo â??Easy File Access with SD_Libâ?? verwendet. > > > > > > Dim X As Integer > > > Dim Text(30) As Char > > > > > > Sub main() > > > Dim res As Byte > > > Text = "Text ;Text ;Text ;Text ;Text" > > > res = SDC_Init(_fat) > > > Do While True > > > X++ > > > Msg_WriteInt(X) > > > Msg_WriteText(" ") > > > ProtokollSpeichern() > > > Msg_WriteChar(13) > > > > > > End While > > > End Sub > > > > > > Sub ProtokollSpeichern() > > > Dim res As Byte > > > Dim bytes_written(1) As Word > > > res = SDC_Init(_fat) > > > > > > Msg_WriteText("SD_READ_FILE_STATUS 1r") > > > SD_READ_FILE_STATUS("protokol.csv") > > > Msg_WriteText("SD_READ_FILE_STATUS 2r") > > > Msg_WriteText(error_str ) > > > Msg_WriteChar(13) > > > > > > SD_OPEN_FILE("protokol.csv") > > > Msg_WriteText(error_str ) > > > SD_SEEK(_attrib(0)) > > > Msg_WriteText(error_str ) > > > SD_WRITE_FILE(Text) > > > Msg_WriteInt(res) > > > SD_CLOSE_FILE() > > > SD_SET_DATE_TIME("protokol.csv", Clock_GetVal(3) + 1, Clock_GetVal(4) + 1, _ > > > Clock_GetVal(5) + 2000, Clock_GetVal(1), Clock_GetVal(2), Clock_GetVal(0)) > > > End Sub > > Hallo Max, > > ein grundsätzliches GröÃ?enproblem kann ich ausschlieÃ?en, da ich gerade problemlos eine Logdatei > > mit mehr als 300 kByte korrekt per AVR32 erstellt und auch lesen kann (Programm in Compact C). > > Leider bin ich mit BASIC nicht besonders vertraut, um den Code beurteilen zu können, würde aber > > die SD_SEEK - Parameter einer genaueren Prüfung unterziehen. > > GruÃ? > > Josef. > > Hallo Josef, > ich weiÃ? was du meinst. Da fehlt ein Argument! > Aber die Adresse des FILE Puffers wird in der SD_Lib.cc eingetragen. > SD_SEEK ist ein Unterprogramm. > Du könntest mir aber den Teil deines Programmes posten wo du Einträge zur Logdatei hinzufügst. > Das würde mir sicher weiterhelfen. > > GruÃ? Max Hallo Max, folgende Routine wird je Programmstart nur einmal gestartet, die Logfile bleibt solange offen und alle weiteren Schreibaktionen finden per SDC_FWrite(..) statt, bis das Programm wieder beendet wird: byte QF; // Rückgabewert der Fileoperation dword FIL_Attrib[4]; // FSTAT - Ergebnisablage dword FIL_Size; // DateigröÃ?e SDC_Init(FAT_Buff); // Dateisystem initialisieren // Logdatei zum Schreiben öffnen mit Zugriffszeitupdate QF = SDC_FOpen (FIL_Buff, Filename, FA_READ | FA_WRITE | FA_OPEN_EXISTING); if(QF!=0) QF = SDC_FOpen (FIL_Buff, Filename, FA_READ | FA_WRITE | FA_CREATE_ALWAYS); // Datumsstring aufbauen QF = SDC_FSetDateTime (Filename, DoM, mm, Year, Min, Std, Sek); QF = SDC_FStat (Filename, FIL_Attrib); FIL_Size = FIL_Attrib[0]; SDC_FSeek(FIL_Buff, FIL_Size); // Datei fortschreiben SDC_Datumseintrag(); // yy.mm.tt in Logfile.csv schreiben SDC_Reihentitel(); // Reihenbeschriftung in die erste Zeile eingtragen GrüÃ?e Josef. | ||
Antwort schreiben Antworten: Re: Absturz bei Dateien >10000 Byte auf SD-Card (von Max - 9.05.2014 20:21) |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum