www.mikrocontroller.net

Forum: Compiler & IDEs Probleme mit SD-Karte


Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallöle

Ich hab mal ne frage und zwar Spiel ich gerade mit dem Programm von 
Klabunde ein wenig rum.

nur hab ich das problem das wenn ich Fopen auf eine nicht vorhandene 
datei mit read argument mache das programm sagt ok, wie kann das ?

Quellcode:
puts("\nStart main Test\n");
  char name[13];
  char name2[]= "messung00.txt";  
  U8 result;
  FileClusterCount=0;
  printf("filefalg - %d\n",FileFlag);
  Fclose();
  sprintf (name,"messung%02d.txt",0);
  printf("%s\n",name);
  Fclose();
  result=ScanDirectory(name);
  printf("name   - %d\n",result);
  Fclose();
  result=ScanDirectory(name2);
  printf("name2  -%d\n",result);
  Fclose();
  result=ScanDirectory("messung00.txt");
  printf("direkt -%d\n",result);
  Fclose();
  result=Fopen("messung00.txt",'r');
  printf("F_OK(%d) F_ERROR(%d) fopen(%d)\n",result,F_OK,F_ERROR);
  Fclose();
  result=Fopen("messung01.txt",'r');
  printf("F_OK(%d) F_ERROR(%d) fopen(%d)\n",result,F_OK,F_ERROR);
  Fclose();
  if(FindName("messung00.txt") == FULL_MATCH)
  {
    printf ("Gefunden\n");
  }
  else if(FindName("messung00.txt") == NO_MATCH)
  {
    printf (" nicht Gefunden\n");
  }
  else
  {
    printf ("was anderes\n");
  }
  puts("\nFILE OPEN\n");
  Fclose();

Und das kommt nachher raus

Start main Test
filefalg - 0
messung00.txt
name   - 0
name2  -0
direkt -0
F_OK(0) F_ERROR(1) fopen(0)
F_OK(0) F_ERROR(1) fopen(0)
was anderes

FILE OPEN

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thomas wrote:

> nur hab ich das problem das wenn ich Fopen auf eine nicht vorhandene
> datei mit read argument mache das programm sagt ok, wie kann das ?
                                                  **
Nein.

>   result=Fopen("messung00.txt",'r');

gibt Dir als result F_ERROR und nicht F_OK.

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah ok Sorry zu doof zum gucken ^^

danke Stefan.

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habs Gefunden Dateiname zu lang bei FAT16.


Sorry für störung ^^

Autor: Martin Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im Zweifel erstmal nur mir kurzen Dateinamane (8.3) und nur 
Großbuchstaben ausprobieren, statt "messung00.txt" z.B. "MESS00.TXT". 
Mglw. "verheddert" sich der Code mit langen Dateinamen.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Thomas
>  FileClusterCount=0;
>  Fclose();

<warning>
Fummel bitte nicht selbstständig an FileClusterCount rum !
Das machen die FAT Routinen schon. Betrachte die Variablen
die mit File anfangen bitte als read-only. Sonst kanns dir das
FAT System auf der Karte zerreissen.
</warning>

@ Martin Thomas

>Im Zweifel erstmal nur mir kurzen Dateinamane (8.3) und nur
>Großbuchstaben ausprobieren, statt "messung00.txt" z.B. "MESS00.TXT".

Groß/Kleinschreibung ist egal. "mess00.txt" geht auch.

>Mglw. "verheddert" sich der Code mit langen Dateinamen.

Lange Dateinamen werden nur von den neuen FAT Routinen wo LFN
hinten dransteht (FATSingleOpt41LFN z.B.) unterstützt.
Aber nicht vollständig. Ist alles noch mit Vorsicht zu geniessen.

Dateien mit langen Dateinamen können zum lesen/schreiben geöffnet
werden, solange sie existieren. Man kann keine neuen Dateien mit
langen Dateinamen erzeugen. Wenn man es versucht kommen merkwürdige
Dinge dabei raus :( Die LFN Unterstützung frisst auch ziemlich viel RAM.
ATmega mit 1k RAM sollte mann da besser nicht nehmen.

Autor: Martin Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Information. Wusste nicht, das in der Library schon 
(ansatzweise) lange Dateinamen unterstützt werden, schon zu lange nich 
mehr reingeschaut. Habe inzwischen etwas mit der Fat-Library von "Rob" 
herumgespielt (robs projects FAT in google sollte finden) und mir die 
libfat von devkitpro (auf sf.net) ein wenig gearbeitet (allerdings auf 
ARM mit relativ viel RAM, für AVR wohl etwas zu "gefräßig"). Beide 
bieten lange Dateinamen, vielleicht nützliche Informationsquellen für 
die eigene Library.

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thx Holger

Das war auch nur zu Testzwecken weil´s einfach nicht laufen wollte 
(wegen eigener blindheit) um zu sehen wie weit ich es reduzieren kann. 
Endprogramm macht nix anderes als jeden Dateinamen den ich Rüberschicke 
auf 8.3 Format umzumodeln, bzw. einen dateinamen hochzuzählen Mess00.txt 
gibs schon dan erstelle Mess01.txt usw.

aber trotzdem danke nochmal an alle.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.