- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 10 von 10

Thema: sd-karte dateizugriff und große dateien

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.01.2008
    Alter
    31
    Beiträge
    540

    sd-karte dateizugriff und große dateien

    Anzeige

    LiFePo4 Akku selber bauen - Video
    ich bin dabei, meinen avr-webserver zu programmieren. wenn ich nun zb ein bild oder eine andere große datei senden will, kann ich ja wohl kaum alle daten der datei in eine array packen und versenden. gibt es gute libs für den sd zugriff, mit denen das problem gelöst werden kann?

    mfg roboman
    ...and always remember...
    ...AVR RULES...

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    der zugriff auf ne SD karte passiert ja per SPI was du da siehst ist quasi das FAT format als rohdaten (auslesen tut man immer 512Byte große sektoren) also müsste man tehoretisch nur die datei nach FAT spezifikation zusammensetzen

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.07.2004
    Ort
    Südhessen
    Beiträge
    1.312
    Dazu gibt es Treiber (als Libs). Such mal im Netz.

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.01.2008
    Alter
    31
    Beiträge
    540
    ich habe gesucht, aber immer nur funktionen gefunden, mit denen ich den inhalt einer ganzen datei auslesen kann. ein bild zb ist aber zu groß, um es auf einmal auszulesen. gibt es dafür eine lib?
    ...and always remember...
    ...AVR RULES...

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    gib mal link, die lib würde mich schwer interessieren und so schwer kanns nich sein das umzuschreiben um sequentiell zu lesen ... mind. 512 byte spreicher musste sowieso vorsehn

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.07.2004
    Ort
    Südhessen
    Beiträge
    1.312
    Die Lib umzuschreiben ist bestimmt nicht sooo schwer.
    Hier ein Beispiel vom Ulrich Radig: http://www.ulrichradig.de/home/index.php/avr/mmc-sd

    Es gibt sicherlich noch weitere Libs, evtl. auch vom Ulrich Radig.

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    di lib ist doch schon fast perfekt,

    void fat_read_file(...) aus der fat_16.c

    gibt dir in 512 byte blöcken die datei wieder, das ist doch ideal ... aber die 4MB grenze ist schwierig, wenn da mal wirklich n etwas größeres bild iss wirds eng

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.01.2008
    Alter
    31
    Beiträge
    540
    ok, danke. wenn ich den code richtig verstehe, muss ich den cluster angeben, wo die datei anfängt( den krieg ich mit fat_search_file raus), den buffer wo der cluster gespeichert werden soll und den block, der gespeichert werden soll.
    ich hab noch ne frage zu fat_search_file: ich versteh nicht, was ich in der variable unsigned int *Cluster angeben muss.

    mfg roboman
    ...and always remember...
    ...AVR RULES...

  9. #9
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    42
    Beiträge
    2.009
    Ich hab die FAT-Libs von Roland Riegel. Da kann ich mit dem Read-Befehl auswählen, wie viele Bytes ich haben will.
    Zum Anzeigen von Bildern auf nem GLCD hol ich mir auch nur die einzelnen Bytes nacheinander und dübel die aufs Display.
    Vorteil: Kein extra Puffer nötig.
    Nachteil: Bildaufbau durch "Langsame" Karte sichtbar.
    #ifndef MfG
    #define MfG

  10. #10
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.07.2004
    Ort
    Südhessen
    Beiträge
    1.312
    Zitat Zitat von Roboman93
    ich hab noch ne frage zu fat_search_file: ich versteh nicht, was ich in der variable unsigned int *Cluster angeben muss.
    Der * in dieser Definition zeigt, dass es ein Pointer ist, d.h. die Funktion ist in der Lage, diese Variable zu füllen (d.h. zu schreiben) und nicht nur zu lesen. Ergo steht in dieser Variable nach dem Ausführen der Funktion der gesuchte Cluster. Dafür musst Du das aber mit '&' aufrufen, um den Pointer und nicht die Variable selbst zu übergeben:

    Code:
    char cluster = 0;
    fat_search_file(..., &cluster, ...);
    if (cluster > 0)
     // AHA! Der gesuchte Cluster!

    @Jaecko:
    Danke für den Tipp, werd ich mir merken. Puffer sind eh immer ein Problem auf µC.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

fchao-Sinus-Wechselrichter AliExpress