Meinhard Ritscher
2015-06-25 12:19:06 UTC
Hallo Zusammen,
ich lese schon seit ein paar Tagen den Code für den Zugriff auf die SD-Karte
aber ich komme nicht weiter.
Was genau macht die Funktion hardware/storage/vfs_sd.c -> vfs_sd_chdir() ?
Wenn ich versuche, eine Datei in einem Unterverzeichnis anzulegen, geht es auf
diese Weise schief:
uint8_t filelogger_init (const char *dirname, char *filename)
{
// dirname = "xyz"
struct fat_dir_struct * dir_struct;
if ( ( dir_struct = vfs_sd_chdir(dirname)) == NULL)
{
vfs_sd_mkdir_recursive( dirname );
vfs_sd_chdir(dirname);
}
// filename = "/xyz/1234.txt";
struct vfs_file_handle_sd_t * filelogger_handle;
if ( (filelogger_handle = vfs_sd_open(filename)) == NULL )
{
if ( (filelogger_handle = vfs_sd_create(filename)) == NULL )
{
debug_printf("could not open file");
return 1;
// schlaegt hier fehl
// oder
// bei filename = "1234.txt";
// wird die Datei im Root- und nicht im Unterverzeichnis erzeugt..)
}
}
}
Wenn ich vfs_sd_chdir jedoch gar nicht aufrufe, haut es hin (wenn das
Verzeichnis existiert).
uint8_t filelogger_init (char *filename)
{
// filename = "/xyz/1234.txt";
struct vfs_file_handle_sd_t * filelogger_handle;
if ( (filelogger_handle = vfs_sd_open(filename)) == NULL )
{
if ( (filelogger_handle = vfs_sd_create(filename)) == NULL )
{
debug_printf("could not open file");
return 1;
}
}
return 0;
}
Kann mir jemand auf die Sprünge helfen?
Was macht vfs_sd_chdir()?
Deren Rückgabewert vom Typ struct fat_dir_struct * kann ich auch nirgendwo
weiterverwenden.
Selbst ein verzweifeltes
vfs_sd_rootnode = vfs_sd_chdir()
hat mich nicht weitergebracht.
Über Tips wäre ich dankbar!
Viele Grüße
Meinhard
ich lese schon seit ein paar Tagen den Code für den Zugriff auf die SD-Karte
aber ich komme nicht weiter.
Was genau macht die Funktion hardware/storage/vfs_sd.c -> vfs_sd_chdir() ?
Wenn ich versuche, eine Datei in einem Unterverzeichnis anzulegen, geht es auf
diese Weise schief:
uint8_t filelogger_init (const char *dirname, char *filename)
{
// dirname = "xyz"
struct fat_dir_struct * dir_struct;
if ( ( dir_struct = vfs_sd_chdir(dirname)) == NULL)
{
vfs_sd_mkdir_recursive( dirname );
vfs_sd_chdir(dirname);
}
// filename = "/xyz/1234.txt";
struct vfs_file_handle_sd_t * filelogger_handle;
if ( (filelogger_handle = vfs_sd_open(filename)) == NULL )
{
if ( (filelogger_handle = vfs_sd_create(filename)) == NULL )
{
debug_printf("could not open file");
return 1;
// schlaegt hier fehl
// oder
// bei filename = "1234.txt";
// wird die Datei im Root- und nicht im Unterverzeichnis erzeugt..)
}
}
}
Wenn ich vfs_sd_chdir jedoch gar nicht aufrufe, haut es hin (wenn das
Verzeichnis existiert).
uint8_t filelogger_init (char *filename)
{
// filename = "/xyz/1234.txt";
struct vfs_file_handle_sd_t * filelogger_handle;
if ( (filelogger_handle = vfs_sd_open(filename)) == NULL )
{
if ( (filelogger_handle = vfs_sd_create(filename)) == NULL )
{
debug_printf("could not open file");
return 1;
}
}
return 0;
}
Kann mir jemand auf die Sprünge helfen?
Was macht vfs_sd_chdir()?
Deren Rückgabewert vom Typ struct fat_dir_struct * kann ich auch nirgendwo
weiterverwenden.
Selbst ein verzweifeltes
vfs_sd_rootnode = vfs_sd_chdir()
hat mich nicht weitergebracht.
Über Tips wäre ich dankbar!
Viele Grüße
Meinhard