Forum: Compiler & IDEs Probleme mit SD-Karte


von Thomas (Gast)


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:
1
puts("\nStart main Test\n");
2
  char name[13];
3
  char name2[]= "messung00.txt";  
4
  U8 result;
5
  FileClusterCount=0;
6
  printf("filefalg - %d\n",FileFlag);
7
  Fclose();
8
  sprintf (name,"messung%02d.txt",0);
9
  printf("%s\n",name);
10
  Fclose();
11
  result=ScanDirectory(name);
12
  printf("name   - %d\n",result);
13
  Fclose();
14
  result=ScanDirectory(name2);
15
  printf("name2  -%d\n",result);
16
  Fclose();
17
  result=ScanDirectory("messung00.txt");
18
  printf("direkt -%d\n",result);
19
  Fclose();
20
  result=Fopen("messung00.txt",'r');
21
  printf("F_OK(%d) F_ERROR(%d) fopen(%d)\n",result,F_OK,F_ERROR);
22
  Fclose();
23
  result=Fopen("messung01.txt",'r');
24
  printf("F_OK(%d) F_ERROR(%d) fopen(%d)\n",result,F_OK,F_ERROR);
25
  Fclose();
26
  if(FindName("messung00.txt") == FULL_MATCH)
27
  {
28
    printf ("Gefunden\n");
29
  }
30
  else if(FindName("messung00.txt") == NO_MATCH)
31
  {
32
    printf (" nicht Gefunden\n");
33
  }
34
  else
35
  {
36
    printf ("was anderes\n");
37
  }
38
  puts("\nFILE OPEN\n");
39
  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

von Stefan B. (stefan) Benutzerseite


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.

von Thomas (Gast)


Lesenswert?

Ah ok Sorry zu doof zum gucken ^^

danke Stefan.

von Thomas (Gast)


Lesenswert?

Habs Gefunden Dateiname zu lang bei FAT16.


Sorry für störung ^^

von Martin Thomas (Gast)


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.

von holger (Gast)


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.

von Martin Thomas (Gast)


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.

von Thomas (Gast)


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.

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.