SD Card auslesen

  • 1
  • 2
  • Page 1 of 2
TheBeginner
Schreiberling
Avatar
Gender: n/a
Location: Wunsiedel Bayern
Age: 66
Posts: 755
Registered: 06 / 2013
Subject:

SD Card auslesen

 · 
Posted: 30.05.2020 - 17:26  ·  #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
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2078
Registered: 03 / 2003
Subject:

Re: SD Card auslesen

 · 
Posted: 31.05.2020 - 08:12  ·  #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
Gender: n/a
Location: Wunsiedel Bayern
Age: 66
Posts: 755
Registered: 06 / 2013
Subject:

Re: SD Card auslesen

 · 
Posted: 31.05.2020 - 10:15  ·  #3
Danke Harry
Harry
Moderator
Avatar
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2078
Registered: 03 / 2003
Subject:

Re: SD Card auslesen

 · 
Posted: 31.05.2020 - 11:15  ·  #4
Hi Frank,

geht es jetzt? Woran lag es?

Harry
TheBeginner
Schreiberling
Avatar
Gender: n/a
Location: Wunsiedel Bayern
Age: 66
Posts: 755
Registered: 06 / 2013
Subject:

Re: SD Card auslesen

 · 
Posted: 31.05.2020 - 17:16  ·  #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
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2078
Registered: 03 / 2003
Subject:

Re: SD Card auslesen

 · 
Posted: 31.05.2020 - 17:58  ·  #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.

Quote
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
Gender:
Age: 53
Homepage: pvs-deck.de
Posts: 1340
Registered: 02 / 2009
Subject:

Re: SD Card auslesen

 · 
Posted: 01.06.2020 - 09:40  ·  #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
Gender: n/a
Location: Wunsiedel Bayern
Age: 66
Posts: 755
Registered: 06 / 2013
Subject:

Re: SD Card auslesen

 · 
Posted: 01.06.2020 - 10:23  ·  #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
  • Page 1 of 2
Selected quotes for multi-quoting:   0

Registered users in this topic

Currently no registered users in this section

The statistic shows who was online during the last 5 minutes. Updated every 90 seconds.
MySQL Queries: 15 · Cache Hits: 14   138   152 · Page-Gen-Time: 0.025655s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI