SD Card auslesen

  • 1
  • 2
  • Seite 1 von 2
TheBeginner
Schreiberling
Avatar
Geschlecht: keine Angabe
Herkunft: Wunsiedel Bayern
Alter: 68
Beiträge: 776
Dabei seit: 06 / 2013
Betreff:

SD Card auslesen

 · 
Gepostet: 30.05.2020 - 17:26 Uhr  ·  #1
ich versuche gerade eine SD Card auszulesen.

und bekomme das zurück
11555660
21554016
36

Das sind die Daten meiner Card
64kb belegt
14,8GB frei
14,8GB Speichergröße

Muss ich da noch etwas berechnen ?


Code

SizeMB  : longword;

Procedure get_MMC_size;
var count : byte;
Begin
  if F16_CheckDisk then                             // we check for an existing FAT16 system
    SizeMB:= F16_GetDiskSize;
    str20:= longToStr(SizeMB);
    count:= length(str20);
    TxBlock(@str20, word(count));
    
    SizeMB:= F16_GetDiskFree;
    str20:= longToStr(SizeMB);
    count:= length(str20);
    TxBlock(@str20, word(count));

    SizeMB:= F16_GetDiskUsed;
    str20:= longToStr(SizeMB);
    count:= length(str20);
    TxBlock(@str20, word(count));
  else
    TXchar('?');
  endif;
end;
Harry
Moderator
Avatar
Geschlecht:
Herkunft: zwischen Augsburg und Ulm
Alter: 60
Beiträge: 2155
Dabei seit: 03 / 2003
Betreff:

Re: SD Card auslesen

 · 
Gepostet: 31.05.2020 - 08:12 Uhr  ·  #2
Hi Frank,

ich verwende nur GetDiskFree und das funktioniert problemlos:
Code

SDFree:=F16_GetDiskFree;
gDrawString(21,-2,1,1,TxtRot0,LongToStr(SDFree div 1024:5:'0')+'MB');


Gruss
Harry
TheBeginner
Schreiberling
Avatar
Geschlecht: keine Angabe
Herkunft: Wunsiedel Bayern
Alter: 68
Beiträge: 776
Dabei seit: 06 / 2013
Betreff:

Re: SD Card auslesen

 · 
Gepostet: 31.05.2020 - 10:15 Uhr  ·  #3
Danke Harry
Harry
Moderator
Avatar
Geschlecht:
Herkunft: zwischen Augsburg und Ulm
Alter: 60
Beiträge: 2155
Dabei seit: 03 / 2003
Betreff:

Re: SD Card auslesen

 · 
Gepostet: 31.05.2020 - 11:15 Uhr  ·  #4
Hi Frank,

geht es jetzt? Woran lag es?

Harry
TheBeginner
Schreiberling
Avatar
Geschlecht: keine Angabe
Herkunft: Wunsiedel Bayern
Alter: 68
Beiträge: 776
Dabei seit: 06 / 2013
Betreff:

Re: SD Card auslesen

 · 
Gepostet: 31.05.2020 - 17:16 Uhr  ·  #5
Hallo Harry, ne ne es geht noch nicht, in mein Code habe ich ja F16_GetDiskFree;
drin und bekomme diesen Wert zurück 21554016

21554016 div 1024 =
Harry
Moderator
Avatar
Geschlecht:
Herkunft: zwischen Augsburg und Ulm
Alter: 60
Beiträge: 2155
Dabei seit: 03 / 2003
Betreff:

Re: SD Card auslesen

 · 
Gepostet: 31.05.2020 - 17:58 Uhr  ·  #6
Und wie ist die Karte formatiert? FAT16 oder FAT32?

Wenn ich mich nicht irre sind das dann 20.55 GByte in FAT32 oder 20.55 MByte in FAT16.

Zitat
Function F16_GetDiskFree : LongWord; Gibt den noch freien Speicherplatz in Bytes des aktuellen Mediums zurück. Beim FAT32 Treiber in kBytes. Diese Funktion erzeugt einen grossen Disk Verkehr braucht deshalb relativ viel Zeit.
pvs-deck
PowerUser
Avatar
Geschlecht:
Alter: 54
Beiträge: 1343
Dabei seit: 02 / 2009
Betreff:

Re: SD Card auslesen

 · 
Gepostet: 01.06.2020 - 09:40 Uhr  ·  #7
Hallo Frank,

ich tippe auf eine Falsche Formatierung!
Hast Du das
1. F16_DiskInit
2. F16_DiskReset
3. F16_CheckDisk

vorher gemacht? Ich habe nur das F16_CheckDisk gesehen.
Hier mal ein Codeausschnitt aus meinem Process, dieser macht beim ersten Start den kompletten Check und alle 12h. Vielleicht hilft da was am Denkansatz.

Code
//-------------------------------------------------------------- 
// Display Process  Fuss und LOGs speichern; 
//-------------------------------------------------------------- 
process LCD_DisplBott(180, 384 : iData; 5);  {Stacksize = 256 bytes, Framesize = 512 bytes, 5 Systicks} 
begin
// FirstStart InitSD hier im Status-Process, damit die anderen Tasks der Steuerung nicht verzögert werden. 
// 
  
  if not bSDFirstStart then 
    bSDFirstStart:= true; // erster Start und alle 12h 1x
    
    sdAktive();// Timer für SD Anzeige LCD setzen 
    bMMCok:= F16_DiskInit;// always the very fist step 
    if not bMMCok then 
    DebugOut('SD init fail!'); 
    endif; 
    
    WDTrig;// WD Triggern wenn eingeschaltet 
    
    if bMMCok then 
      sdAktive();// Timer für SD Anzeige LCD setzen 
      bMMCok:= F16_DiskReset;                         // SD Disk Reset 
      if not bMMCok then  
       DebugOut('SD Reset fail!'); 
      endif; 
    endif; 
    
    WDTrig;// WD TRriggern wenn eingeschaltet 
    
    if bMMCok then 
      sdAktive();// Timer für SD Anzeige LCD setzen 
      if F16_CheckDisk then                         // ist ein gültiges FAT16 vorhanden, 
        SizeMBsd:= F16_GetDiskSize;                 // dann die Daten holen 
        SizeMBsdFree:= F16_GetDiskFree; 
        SizeMBsdUsed:= F16_GetDiskUsed; 
        
        WDTrig;// WD TRriggern wenn eingeschaltet 
        if not bMMCok then 
         DebugOut('SD CheckDisk fail!'); 
        endif; 
        
        WDTrig;// WD TRriggern wenn eingeschaltet 
        
      // Prüfe ob BOOT.CFG vorhanden und identisch ist 
        if CheckBootCfg then 
          DebugOut('CheckBoot  SD<>EEPR'); 
          BCfgUnterschied:= true; 
        else 
          BCfgUnterschied:= false; 
          BCfgFrage:= false; 
        endif; 
        
      endif; 
    endif; 
    
  endif;// bSDFirstStart 
  
//------------------------------ 
  
  WDTrig;// WD TRriggern wenn eingeschaltet 
  DispBottom; // Statuszeile mit Uhr, Zustand usw. 
  Save_LogPipe;     // Prüfen ob Meldungen in der Pipe liegen, dann auf SD ablegen 
  
  Schedule;       // Rechenzeit nach 1. Durchlauf sofort freigeben 
  
end LCD_DisplBott; 


Thorsten
TheBeginner
Schreiberling
Avatar
Geschlecht: keine Angabe
Herkunft: Wunsiedel Bayern
Alter: 68
Beiträge: 776
Dabei seit: 06 / 2013
Betreff:

Re: SD Card auslesen

 · 
Gepostet: 01.06.2020 - 10:23 Uhr  ·  #8
Guten Morgen Thorsten,

ich habe sie gerade mit dem Computer neu Formatiert Fat32,
habe genauso alles gemacht wie du

1. F16_DiskInit
2. F16_DiskReset
3. F16_CheckDisk


SizeMBsd:= F16_GetDiskSize;
SizeMBsdFree:= F16_GetDiskFree;
SizeMBsdUsed:= F16_GetDiskUsed;


und bekomme das zurück
11555660
21554016
36

Das sind die Daten meiner Card
64kb belegt
14,8GB frei
14,8GB Speichergröße


Gruß Frank
  • 1
  • 2
  • Seite 1 von 2
Gewählte Zitate für Mehrfachzitierung:   0

Registrierte in diesem Topic

Aktuell kein registrierter in diesem Bereich

Die Statistik zeigt, wer in den letzten 5 Minuten online war. Erneuerung alle 90 Sekunden.
MySQL Queries: 14 · Cache Hits: 14   138   152 · Page-Gen-Time: 0.032659s · Speichernutzung: 2 MB · GZIP: ein · Viewport: SMXL-HiDPI