Kód: Egész kijelölése
'KokkeKat_FAT_HELP_Hu.bas
' By: kapu48. 2011 07.
'(
' Magyar nyelvű HELP az alábbi Library rutinjaihoz:
' "KokkeKat FAT-free SD library code" for SDSC, SDHC, and SDXC - INCLUDE at the end of your code
A "KokkeKat_FAT-free_SD_lib_decl.bas" Fő alapp elve, hogy csak a szükséges részeket fordítjuk be a kódba!
Optimális Memória használat céljából! Ezért vannak Constansok létrehozva a feltételes fordítások bealításához.
Ha valahól nem talál, vagy duplán talál valamit a fordító, akkor itt keresgéld a hibát először!
' Alap SD kártyakezelő rutinok:
................................................................................
>>> SDINIT:
SD kártya inicializálása és azonosítás
Az inicializálás sorrendje határozza meg a kártya SPI módban meghatározza kártya típusát, és ellenőrzi a kártyán
Lévő támogatott feszültségtartomány. Befejezését követően, a kártya készen áll a tényleges olvasás és írásra
Hamarosan meg tesszük.
Van 2 féle iniciálás.
1.: Ha Sdinitdetail = 1 Minimum detail (csak győződjön meg róla, hogy az init sikeres) Kevesebb helyet foglal
2.: Ha Sdinitdetail = 0 Teljes részletességgel (visszatérés részletesen, ha az init sikertelen)
Változókban vissza kapot értékek:
Sdresponse(6) Byte : A <= 48 bites SD válassza az aktuális utasítás végrehajtása után.
Amiket vizsgálni kel:
Sdresponse(1) = 255 Időtúllépés a CMD8
Sdcardtype Byte = : A Kártya típus kódja
Sdstatus Byte : Állapot jelző Byte. Kódértelmező tábláztat a Help végén összefoglalva!
A rutin végén a SPI-t 2*es sebességre állítja!
................................................................................
>>> Sdcheckr1:
SD vissza adott ellenőrző érték (Sdresponse) konvertálása (Sdstatus) kódokká.
Részletezve a lap alján!>>
................................................................................
>>> Sdreadsector:
Olvassa 1 szektort SD
Bemenő változók:
Sdcardtype
Sdsectord
Kimenő változók: Ha Sdstatus = 0
Ha Sdwmode = 1 és Sdreaddestination = 0, Az adatok a Sdbuffer(1 - 512)bekerülnek
Ha Sdwmode = 1 és Sdreaddestination > 0, Az adatok a Sdfatbuffer(1 - 512)bekerülnek
................................................................................
>>> Sdwritesector:
Ír 1 Szektort. Ha fordítási: Sdwmode > 0
Bemenő változók:
Sdcardtype
Sdsectord
Kimenő változók:
Ha Sdwmode = 1 és Sdwriteorigin = 0, Írja ki az adatblokkot a Sdbuffer-ból
Ha Sdwmode = 1 és Sdwriteorigin > 0, Írja ki az adatblokkot a Sdfatbuffer-ból
Sdstatus = 0 : Irás OK
--------------------------------------------------------------------------------
#HA Sdfsactive = 1 FAT16/32 fájlrendszer aktív
>>> Sdinitfs:
SD Adatok beolvasása:
Kimenő változók:
Sdbuffer(1-255) : Főbb Értékek Leírása:
00h ismeretlen vagy semmi
01h 12-bites FAT
04h 16-bites FAT (partíció kisebb, mint 32MB)
05h kiterjesztett MS-DOS partíció
06h 16-bites FAT (partíció nagyobb, mint 32MB)
0BH 32-bites FAT (partíció akár 2048GB)
0Ch Ugyanaz, mint 0BH, de használ LBA1 13h-bővítmények
0Eh Ugyanaz, mint 06h, de használ LBA1 13h-bővítmények
0Fh Ugyanaz, mint 05h, de használ LBA1 13h-bővítmények
...
...
...
................................................................................
>>> Sdlocatesector:
Keresse SD szektort
Bemenet változó:
Sdclusterd = jelenlegi klaszter
Sdclusterb (4) Byte Vagy
Sdclusterd Duplaszó Aktuális klaszter száma
Kimeneti változó:
Sdsectord = az abszolút szektor száma ebben a csoportban
................................................................................
>>> Sdlocatenextcluster:
Keressen következő klasztert (fürtöt)
Bemeneti változó:
Sdclusterd = jelenlegi klaszter
Sdclusterb (4) Byte Vagy
Sdclusterd Duplaszó Aktuális klaszter száma
Kimeneti változó:
Sdclusterd = következő klaszter
................................................................................
>>> Sdcalculatefat1sector:
SD cím kiszámításához FAT 1 szektor
Bemeneti változó:
Sdclusterd = jelenlegi klaszter
Sdclusterb (4) Byte Vagy
Sdclusterd Duplaszó Aktuális klaszter száma
#END--------------------------------------------------------------------------------
#HA Sdrmode = 1 And Sdfsactive = 1 ( 1 = olvasott és ' 1 = FAT16/32 fájlrendszer olvasás aktív )
>>> Sdreadbyte:
Használható olvasni egy byte az aktuális fájlból, ahogy helyezkedik el Gosub Sdfindentryindirectory vagy Gosub Sddirlist
Hívása előtt ellenőrizze, hogy:
Sdfilesized > 0,
Sdstatus = 0, és
Sdeof = 0
Bemeneti változók:
Sdclusterd = Aktuális fájl klaszter Sdclusterb (4) Byte Vagy Sdclusterd Duplaszó Aktuális klaszter száma
Sdsecincluster = szektor száma ebben a klaszterben, 0-ra, mielőtt az első hívás
Sdbufferpos = buffer pos ebben a szektorban
Sdsectord = abszolút szektor száma
Kimeneti változók:
Sdbyterw : az olvasott byte
Sdbytesread : olvasott byte számláló
Sdeof = 1 : End Of fájl található, egyébként 0
Sdstatus : Byte
#endif--------------------------------------------------------------------------
#if Sdusefind = 1 ( Használ FIND rutint )
>>> Sdfindentryindirectory:
Megkeres 1 bejegyzést a könyvtárban
Használd, hogy találj egy fájlt, alkönyvtárt, Eszköz ID, vagy rendelkezésre álló könyvtár elérhető belépést
Bemeneti változók:
Sdclusterd : A klaszter száma a könyvtár, amelyben keresni szeretne (tényleges klaszter vagy
0 a root könyvtárban)
Sdsecincluster = 1 : ha csinálsz az első keresés, egyébként a tényleges Sdsecincluster
Sdbufferpos = 1 : ha csinálsz az első keresés, egyébként a tényleges Sdbufferpos
Sdentrynames : A fájl vagy alkönyvtár nevét
Sddirectorymode : 0 = találtam fájlt, 1 = találtam alkönyvtárt, 2 = találtam SD Névet ID,
3 = találtam elérhető könyvtárat bejegyzést, 4 találtam szülő könyvtárat
Ha Sdrwmode = 2 Vagy Sdrwmode = 4 :
Sdbuffer() : Sdreaddestination = 0 vagy
Sdfatbuffer() : Sdreaddestination = 1
Kimeneti változók:
Sdstatus:
28 = A rendelkezésre álló könyvtár helyet találtam
31 = EOC End Of klaszter lánc talált (könyvtár)
32 = EOD End Of Directory marker található
34 = A kötet ID találtam
47 = Szülő könyvtár mutató találtam
48 = A fájl vagy alkönyvtár található
Sddirectorymode = 2:
Sdclusterd = Következő klaszter száma (ahol a file / alkönyvtár található)
Sdentrynames = A kötet id neve
Sddirectorymode <> 2:
Sddirclusterd = Cluster száma ehhez a könyvtárhoz belépés
Sddirsecincluster = Lánc start szektor száma az aktuális könyvtárban klaszter, 1 a Sdsecincluster
Sddirbufferpos = Lánc induló könyvtárát számlálópozíció, 1-512
Sdclusterd = Következő klaszter száma (ahol a file / alkönyvtár tartózkodik)
................................................................................
>>> Sddirsectorloop:
Keres következő Lehívható bejegyzést a SD könyvtárban.
Bemenő változók:
Sdsectord = abszolút könyvtár szektor száma
Sdbufferpos = 1, ha csinálsz az első keresés, egyébként a tényleges Sdbufferpos
Sddirectorymode
0 = Fájlkeresés
1 = találni alkönyvtárban
2 = találni kötet ID
3 = találni elérhető könyvtár bejegyzést
4 = találni szülő könyvtár
5 = vissza teljes bejegyzés, kivéve, ha EOD (csak ha engedélyezett Sdusefindstoreentry = 1)
Kimeneti változók:
Sdstatus:
28 = Egy szabad könyvtár helyet találtam
32 = EOD End Of Directory marker található
34 = A kötet ID találtam
47 = Szülő könyvtár mutató találtam
48 = A fájl vagy alkönyvtár található
Ha Sddirectorymode = 2:
Sdclusterd = Következő klaszter szám (adott fájl / alkönyvtár található)
Sdentrynames = A kötet ID
Ha Sddirectorymode <> 2:
Sddirclusterd = Cluster száma ehhez a könyvtárhoz bejegyzés
Sddirsecincluster = lánc start szektor számát az aktuális könyvtárban klaszter, 1 Sdsecincluster
Sddirbufferpos = lánc induló könyvtárát számlálópozíció, 1-512
Sdclusterd = Következő klaszter szám (adott fájl / alkönyvtár található)
Sdbuffer : ???
................................................................................
>>> Sdcheckclusterreference0:
Ellenőrizze, amennyiben ez jelzi a EOC (>=&HFFF8 or >=&H0FFFFFF8)
Kimeneti változók:
Sdstatus = 31 EOC Vége a klaszter láncnak találat ' EOC End OF Cluster chain found
................................................................................
>>> Sdgetclusterandsize:
Sd kapni klaszter és mérete:
Bemenő változók:
Sdfattype
Sdbuffer
Sdbufferpos
Kimeneti változók:
Sdclusterb() = Fájl / alkönyvtárt cluster száma ' File/subdirectory cluster number
Sdfilesizeb() = Fájl mérete byte-ban 'File size in bytes
#ENDIF--------------------------------------------------------------------------------
#if Sdwmode > 0 And Sdfsactive = 1
2 = write unbuffered vagy 1 = write buffered És 1 = FAT16/32 fájlrendszer aktív
>>> Sdcreatefileordir:
Használd, mint az első három lépést, amikor létrehoz egy új fájlt, vagy az egyetlen lépés,
ha létrehoz egy új alkönyvtárt
Sdwritebyte és Sdclosefile az elkövetkező két
Keresse szabad FAT bejegyzés található szabad könyvtár bejegyzést, és mentsd meg a könyvtár bejegyzést
vissza az SD kártyára
Bemeneti változók:
Sdentrynames = a 8.3 fájlnév
Sdcreatemode : 0 = Fájl, 1 = alkönyvtárt
Sdstartdirclusterd = a könyvtár klaszter száma (ahol a fájl vagy alkönyvtárt kell létrehozni).
Állítsa 0-gyökérkönyvtár.
Sdyear = az év
Sdmonth = a hónap
Sdday = a nap
Sdhours = az óra
Sdminutes = a perc
Sdseconds = a másodperc
Sdmseconds = az ezredmásodperc
If Sdmaintainfsinfo = 1
Sdfsinfofreeclustersd = a szabad klaszterek száma
Sdfsinfonextfreeclusterd = A következő nem használt cluster (jellemzően nem az első szabad
újrafelhasználható cluster)
Kimeneti változók:
Sdpartitionfull = 1, ha a partíció tele (nincs több szabad FAT bejegyzés)
Sdfatsectornum = a FAT szektor száma
Sdfatbufferpos = a helyzet ebben az ágazatban
Sddirclusterd = a könyvtár klaszter
Sddirsecincluster = az ágazat ebben a klaszterben
Sddirbufferpos = a helyzet ebben az ágazatban
Sdwclusterd = A klaszter száma vagyunk írásban
Sdwsecincluster = az ágazat ebben a klaszter (1)
Sdwbufferpos = a helyzet ebben az ágazatban (0) - Felhívjuk a figyelmét!
Sdwfilesized = a fájl méretét (0)
If Sdmaintainfsinfo = 1
Sdfsinfofreeclustersd = a szabad klaszterek
Sdfsinfonextfreeclusterd = A következő nem használt cluster (jellemzően nem az első szabad újrafelhasználható
cluster)
Sdstatus = 0 : OK
................................................................................
#if Sduseappend = 1 Jelezze Sdapp véget
>>> Sdpreparetoappend:
Használható hozzáfűzhet egy már létező fájlban
Bemeneti változók:
Sdentrynames = a 8.3 fájlnév
Sdyear = az év
Sdmonth = a hónap
Sdday = a nap
Sdhours = az óra
Sdminutes = a perc
Sdseconds = a másodperc
Sdstartdirclusterd = az első klaszter ennek a (szub-) könyvtárban
Sdfsinfofreeclustersd = a szabad klaszterek
Sdfsinfonextfreeclusterd = A következő nem használt cluster (jellemzően nem az első szabad újrafelhasználható
cluster)
Kimeneti változók:
Sdwclusterd = A klaszter száma vagyunk írásban
Sdwsecincluster = az ágazat ebben a klaszterben
Sdwbufferpos = a helyzet ebben az ágazatban
Sdwfilesized = a fájl mérete
Sdfatsectornum = a FAT szektor száma
Sdfatbufferpos = a helyzet ebben az ágazatban
Sddirclusterd = a könyvtár klaszter
Sddirsecincluster = az ágazat ebben a klaszterben
Sddirbufferpos = a helyzet ebben az ágazatban
Sdfsinfofreeclustersd = a szabad klaszterek
Sdfsinfonextfreeclusterd = A következő nem használt cluster (jellemzően nem az első szabad újrafelhasználható
cluster)
Sddirclusterd, Sddirsecincluster és Sddirbufferpos pontja ebbe a könyvtárba belépés
Sdwclusterd, Sdwsecincluster és Sdwbufferpos pontja az utolsó bájt a fájl
Sdfatclusterd, Sdfatsectornum és Sdfatbufferpos pontja az utolsó FAT belépés (klaszter szám)
................................................................................
>>> Sdwritebyte:
Használható, hogy írjon egy byte egy megnyitott fájl
Mindig győződjön meg arról, hogy Sdclosefile = 0 mielőtt írás
Bemeneti változók:
Sdclosefile kell 0 - ellenkező esetben a fájlt le kell zárni
Sdwclusterd = A klaszter száma vagyunk írásban (eredetileg a Sdcreatefileordir vagy Sdappendfile -
Touch csak írásban> 1 file)
Sdwsecincluster = az ágazat ebben a klaszter (eredetileg a Sdcreatefileordir vagy Sdappendfile -
touch csak írásban> 1 file)
Sdwbufferpos = a helyzet ebben az ágazatban (eredetileg a Sdcreatefileordir vagy Sdappendfile -
touch csak írásban> 1 file)
Sdwfilesized = A fájl mérete (eredetileg a Sdcreatefileordir vagy Sdappendfile - touch csak írásban>
1 file)
Sdfatsectornum = a FAT szektor számát (kezdetben által meghatározott Sdcreatefileordir vagy Sdappendfile -
touch csak írásban> 1 file)
Sdfatbufferpos = a helyzet ebben az ágazatban (eredetileg a Sdcreatefileordir vagy Sdappendfile -
touch csak írásban> 1 file)
Sdbuffer () (érintse meg csak akkor, ha írásban> 1 file)
Sdbyterw = az adatokat byte vagyunk arról írni
Kimeneti változók:
Sdwclusterd = A klaszter száma vagyunk írásban
Sdwsecincluster = az ágazat ebben a klaszterben
Sdwbufferpos = a helyzet ebben az ágazatban
Sdwfilesized = a fájl mérete
Sdfatsectornum = a FAT szektor száma
Sdfatbufferpos = a helyzet ebben az ágazatban
Sdbuffer ()
Sdpartitionfull = 1, ha a partíció teljes (nincs több szabad FAT bejegyzés)
Sdclosefile = 1, ha a fájlt be kell zárni a visszatérés a gosub
Visszatért állapotok:
Sdstatus = 0 Sikeres
Sdstatus = 7 Timeout
Sdstatus = 41 adatokat elutasította CRC hiba miatt
Sdstatus = 42 adatok miatt visszautasításra írási hiba
Sdstatus = 43 szabad FAT bejegyzés található
Sdstatus = 44 A partíció teljes - tárolni FAT EOC marker
................................................................................
>>> Sdfinalizeafterwriting:
Használható, hogy zárja be a fájlt, miután az utolsó hívás Sdwritebyte
Bemeneti változók:
Sdwclusterd = A klaszter száma vagyunk írásban (meghatározott Sdwritebyte - touch csak írásban> 1 file)
Sdwsecincluster = az ágazat ebben a klaszter (meghatározott Sdwritebyte - touch csak írásban> 1 file)
Sdwbufferpos = a helyzet ebben az ágazatban (meghatározott Sdwritebyte - touch csak írásban> 1 file)
Sdwfilesized = a fájl méretét (meghatározott Sdwritebyte - touch csak írásban> 1 file)
Sdfatsectornum = a FAT szektor száma (meghatározott Sdwritebyte - touch csak írásban> 1 file)
Sdfatbufferpos = a helyzet ebben az ágazatban (meghatározott Sdwritebyte - touch csak írásban> 1 file)
Sddirclusterd = a könyvtár klaszter egyre fájlméret (rögzített vagy Sdcreatefileordir Sdappendfile -
touch csak írásban> 1 file)
Sddirsecincluster = az ágazat ebben a klaszter (rögzített vagy Sdcreatefileordir Sdappendfile -
touch csak írásban> 1 file)
Sddirbufferpos = a helyzet ebben az ágazatban (rögzített vagy Sdcreatefileordir Sdappendfile -
touch csak írásban> 1 file)
Sdbuffer () (érintse meg csak akkor, ha írásban> 1 file)
Sdfatbuffer () (érintse meg csak akkor, ha írásban> 1 file)
Sdsavedatasector = 1, ha az adatokat el kell menteni az SD (meghatározott Sdwritebyte -
touch csak írásban> 1 file)
Kimeneti változók:
Sdclosefile = 0, ha a fájl lezárás sikeres volt
Visszatért állapotok:
Sdstatus = 0 Sikeres
Sdstatus = 7 időtúllépés
Sdstatus = 41 adatok elutasította CRC hiba miatt
Sdstatus = 42 adatok miatt visszautasításra írási hiba
................................................................................
>>> Sdstoredirentry:
Tárol minden információt egy új könyvtárat bejegyzés, kivéve a fájl mérete,
hogy frissülni fog a végén a második olvasási + írni ezt a könyvtárat szektor
Bemeneti változók:
Sdentrynames = a neve az új fájl vagy alkönyvtár (vagy. .. Ha a Bevezető subirectory bejegyzés)
Sdcreatemode : 0 = Fájl 1 = alkönyvtár
Sdclusterd = A klaszter számát, ahol az új fájlt vagy alkönyvtárt indul
Sdwfilesized = A fájl mérete (0 alkönyvtár, vagy ha létre egy új fájlt)
Sdbufferpos = a puffer pozícióját a jelenlegi szektorban az aktuális könyvtár klaszter
Sdbuffer () = az aktuális könyvtárban szektor
Sdyear = az év
Sdmonth = a hónap
Sdday = a nap
Sdhours = az óra
Sdminutes = a perc
Sdseconds = a másodperc
Sdmseconds = az ezredmásodperc
Kimeneti változók:
Sdbuffer() = az aktuális könyvtárban szektor
Sddatew = a dátumot DateTime formában (általában nem használt utána)
Sdtimew = az idő DateTime formátumban (általában nem használt utána)
................................................................................
>>> Sdstore19_26:
Adja meg a fájl méretét a könyvtárra vonatkozó bejegyzés
................................................................................
>>> Sdstore29_32:
Adja meg a fájl méretét a könyvtárra vonatkozó bejegyzés
................................................................................
>>> Sdfindfreefat:
Használható keresni FAT1 a szabad belépés, kezdve Sdsectord, és tárolni pozíciók számának és a FAT1 szektor
Bemeneti változók:
Sdsectord = a FAT1 szektor vagyunk től (> = Sdfat1location, <Sdfat2location)
Sdbufferpos = 1 vagy az aktuális pozíció
Kimeneti változók:
Sdfatsectornum = a FAT1 ágazat, amelyben találtunk egy szabad belépőt
Sdfatbufferpos = a helyzet ebben az ágazatban
Sdfatclusterd = A klaszter szám megfelel a fenti FAT1 helyzetben
Sdwclusterd = A klaszter szám megfelel a fenti FAT1 helyzetben
Sdwsecincluster = 1
Sdwbufferpos = 0 (praktikusabb kiindulási pont, mint 1)
Sdwfilesized = 0
A visszatérési állapotok:
Sdstatus = 0 = Sikeres
Sdstatus = 7 = időtúllépés
................................................................................
>>> Sdfindfreefatentry:
Használható keresni FAT1 a szabad belépőt, kezdve Sdsectord
Bemeneti változók:
Rendeljen Sdsectord (> = Sdfat1location, <Sdfat2location)
Hozzárendelése Sdbufferpos = 1 vagy tényleges helyzet
Kimeneti változók:
Sdsectord = a FAT1 ágazat, amelyben találtunk egy szabad belépőt
Sdbufferpos = a helyzet ebben az ágazatban
A visszatérési állapotok:
Sdstatus = 0 = Sikeres
Sdstatus = 7 = időtúllépés
Sdstatus = 43 = szabad FAT bejegyzés található
Sdstatus = 44 = vége FAT és nem találtak szabad belépőt
................................................................................
>>> Sdwclearcluster:
Használható írni nullák a szektor 2-Sdsecspercluster (ami majd ezt követően akár nulla az ágazati 1 vagy az új
könyvtár bejegyzés vagy. .. Bejegyzések)
Bemeneti változók:
Sdclusterd = A klaszter vagyunk arról törléséhez
Kimeneti változók:
Sdbuffer() tartalmaz, 512 * nulla
A visszatérési állapotok:
Sdstatus = 0 Sikeres
Sdstatus = 7 időtúllépés
Sdstatus = 41 adatok elutasította CRC hiba miatt
Sdstatus = 42 adatok miatt visszautasításra írási hiba
................................................................................
>>> Sdsavefatsec:
Tárol következő klaszter vagy EOC marker SD / FAT / buffer () a Sdfatbufferpos és mentse vissza az SD kártya
(FAT1 és FAT2)
Bemeneti változó:
Sdfatbufferpos = a FAT bejegyzés helyzetben
Sdfatsectornum = a FAT szektor száma
Sdclusterd = a következő cluster számát vagy EOC marker
Kimeneti változó:
Sdbuffer ()
A visszatérési állapotok:
Sdstatus = 0 Sikeres
Sdstatus = 7 időtúllépés
Sdstatus = 41 adatok elutasította CRC hiba miatt
Sdstatus = 42 adatok miatt visszautasításra írási hiba
................................................................................
#if Sdwmode > 0 And Sdfsactive = 1
>>> Sdcalculatefatentrycluster:
Kiszámításához használt klaszter számot a FAT bejegyzés által meghatározott Sdsectord és Sdbufferpos
Bemeneti változók:
Sdsectord = az aktuális FAT szektor
Sdbufferpos = a pozíció azon belül
Kimeneti változó:
Sdclusterd rendelkezik a klaszter szám
................................................................................
>>> Sdlocatedirsector:
................................................................................
#if Sdwmode > 0
#if Sdfsactive = 1 Or Sdusewipe = 1
>>> Sdpreparedatetime:
Kiszámítására használt dátum és idő a formátumot használják a könyvtár bejegyzések
Bemeneti változók:
Sdyear
Sdmonth
Sdday
Sdhours
Sdminutes
Sdseconds
Kimeneti változók:
Sddatew tartja a dátumot
Sdtimew tartja az időt
Belsőleg használt változók:
Sdtempb
Dátum és idő formátumok
Sok FAT fájlrendszer nem támogatja a dátum / idő nem DIR_WrtTime és DIR_WrtDate.
Emiatt DIR_CrtTimeMil, DIR_CrtTime, DIR_CrtDate és DIR_LstAccDate valójában opcionális mezőket.
DIR_WrtTime és DIR_WrtDate támogatni kell, de.
Ha a másik dátum és idő mező nem támogatja, akkor be kell 0-ra a fájlt hoz létre, és figyelmen kívül hagyja a többi fájl műveletek.
Dátum formátum. A FAT könyvtárra vonatkozó bejegyzés a bélyegzőt egy 16-bites mező, amely alapvetően egy időpontot képest az MS-DOS korszaka 1980/01/01.
Itt van a formátumot (bit 0 a LSB a 16 bites szó bit 15 az MSB a 16-bit):
Bits 0-4 : A hónap napja, érvényes tartomány 1-31 beleértve.
Bits 5-8 : Hónap év, 1 = január, érvényes tartomány 1-12 beleértve.
Bits 9-15: gróf éve 1980-tól érvényes tartomány 0-127 inclusive (1980-2107).
Idő formátum. A FAT könyvtárra vonatkozó bejegyzés időbélyeg egy 16-bites mező, amely finomsága 2 másodpercig.
Itt van a formátumot (bit 0 a LSB a 16 bites szó bit 15 az MSB a 16 bites szó).
Bits 0-4 : 2 másodperces szám, érvényes tartomány 0-29 inclusive (0 - 58 másodperc).
Bits 50-10: Perc, érvényes tartomány 0-59 beleértve.
Bits 11-15: óra, érvényes tartomány 0-23 beleértve.
Az érvényes idő tartománya Midnight 0:00:00-23:59:58.
................................................................................
#if Sdusefsinfo = 1
>>> Sdreadfsinfo:
Használható olvasni a fsinfo változók
Bemeneti változó
Egyik sem
Kimeneti változók:
Sdfsinfofreeclustersd : rendelkezik a számú szabad klaszterek
Sdfsinfonextfreeclusterd : pont a következő használt klaszter (jellemzően nem az első szabad
újrafelhasználható cluster)
A visszatérési állapotok:
Sdstatus = 0 Sikeres
Sdstatus = 7 időtúllépés
................................................................................
>>> Sdwritefsinfo:
Használható írni a fsinfo változók vissza az SD kártya (miután frissítve)
Bemeneti változók:
Sdfsinfofreeclustersd : rendelkezik a számú szabad klaszterek
Sdfsinfonextfreeclusterd : pont a következő használt klaszter (jellemzően nem az első szabad
újrafelhasználható cluster)
Kimeneti változó
egyik sem
A visszatérési állapotok:
Sdstatus = 0 Sikeres
Sdstatus = 7 időtúllépés
Sdstatus = 41 adatok elutasította CRC hiba miatt
Sdstatus = 42 adatok miatt visszautasításra írási hiba
................................................................................
>>> Sdupdatefsinfo:
Használható, amikor egy újabb klaszter kerül üzembe helyezett
Bemeneti változók:
Sdfatclusterd = A klaszter imént elkezdte használni
Sdfsinfofreeclustersd = tartja a korábbi számú szabad klaszterek
Sdfsinfonextfreeclusterd : mutat az előző használt klaszter (jellemzően nem az első szabad újrafelhasználható cluster)
Kimeneti változók:
Sdfsinfofreeclustersd : rendelkezik a frissített számú szabad klaszterek
Sdfsinfonextfreeclusterd : pont a következő használt klaszter (jellemzően nem az első szabad
újrafelhasználható cluster)
................................................................................
#if Sdusedirlist = 1
>>> Sddirlist:
Jelenleg feltételezi, soha nem töltse ki az SD kártya teljesen!
Használható, hogy lépjünk előre és hátra keresztül az aktuális könyvtárban
Hívja a rutin egy ciklus, amelyben ellenőrizni bizonyos Sdstatus értékek
Visszaállítása Sdstatus 0-ra, mielőtt a következő lépés a hurok
Az első hívás egy új könyvtárat, hozzá valódi vagy látszólagos Sdclusterd.
Ha felsorolja a gyökér, állítsa dummy értékét 0 és támogatja a FAT16 könyvtárat.
Az első hívás egy új könyvtárat, hozzá Sddirlistarraycounter = 0
Mindig hozzá Sddirlistdirection, 0 = előre, 1 = hátra
Rutin-specifikus Sdstatuses:
26 = A fájl bejegyzés találtam
27 = A könyvtár bejegyzést találtam
28 = Egy szabad könyvtár helyet talált
32 = EOD End Of Directory marker található
33 = Alkönyvtár. vagy .. bejegyzést találtam
34 = A kötet ID találtam
36 = Hosszú fájlnév találtam
................................................................................
#if Sdusedirlist = 1
>>> Sdcheckclusterreference:
Ellenőrizze, hogy ez azt jelzi, EOC (> = & HFFF8 vagy> = & H0FFFFFF8) Check if it indicates EOC (>=&HFFF8 or >=&H0FFFFFF8)
................................................................................
#if Sduselfn = 1
>>> Sdlookforlfn:
Hívás után Sddirlist visszatért a Sdstatus = 26 (file) vagy 27 (alkönyvtár)
................................................................................
#if Sduselfn = 1
>>> Sdcalculatelfnchecksum:
................................................................................
#if Sduselfncompare = 1
>>> Sdcomparefilenames:
................................................................................
#if Sdusewipe = 1 használja a törlést
>>> Sdwipe:
Tisztítására használt, és alaphelyzetbe álit FAT1, FAT2, gyökérkönyvtár, és fsinfo szektorban.
Ez NEM egy valódi formázást!
Bemeneti változók
Sdentrynames minden 11 karakter szóközökkel
Sdentrynames minda 11 Karakter szóközökkel
Sdyear
Sdmonth
Sdday
Sdhours
Sdminutes
Sdseconds
................................................................................
1 = használja A méret info rutin
#if Sdusesizeinfo = 1
>>> Sdreceivebuffer18:
................................................................................
>>> Sdrequestcid:
................................................................................
>>> Sdrequestcsd:
' 16 bytes, MSB first
................................................................................
>>> Sdcalculatesize:
Sdrequestcsd után lehet hívni
' v2+
' Bits 127-126 = 01 (byte 1.6 = 1, 1.7 = 0)
' C_SIZE 22 bits 69-48 (bytes 8&B00111111,9,10)
' Size = C_SIZE * 2^19
' v1.x:
' Bits 127-126 = 00
' C_SIZE 12 bits 73-62 (bytes 7&B00000011, 8, 9&B11000000)
' C_SIZE_MULT 3 bits 49-47 (bytes 10&B00000011, 11&B10000000)
' READ_BL_LEN 4 bits 84-80 (byte 6&B00001111)
' Size = (C_SIZE+1) * 2^(C_SIZE_MULT+2) * 2^READ_BL_LEN
................................................................................
>>> Sdrequeststatus:
SD kérés állapota
................................................................................
#if Sdusecrc7 = 1
>>> Sdcheckresponsecrc7:
Fogadja az SD választ, és ellenőrzi a CRC
................................................................................
>>> Function Sdcrc7(byval Sdarray As Byte) As Byte
Kiszámítja CRC7 az 5 Első byte Sdarray
================================================================================
Sd status kódok:
0 = Siker (nincs hiba található)
1 = Időtúllépés az inicializálás CMD0
2 = Időtúllépés az inicializálás CMD8
3 = Időtúllépés az inicializálás first CMD58
4 = Időtúllépés a kezdeti CMD55 + ACMD41 hurok
5 = Időtúllépés az inicializálás második CMD58
6 = Időtúllépés a CMD13
7 = Időtúllépés várakozás közben & H00 & HFE
8 = Minimális inicializálási részletesen meg nem határozott hiba 1
9 = Minimális inicializálási részletesen meg nem határozott hiba 2
10 = R1 tétlen (futás inicializálás)
11 = R1 törli alaphelyzetbe
12 = R1 illegális parancs
13 = R1 parancsot CRC hiba
14 = R1 sorozat törlés hiba
15 = R1 cím hiba
16 = R1 paraméter hiba
17 = R3 nem egy SD-kártyát
18 = R3 tápfeszültség határon kívüliek
19 = R7 nem támogatott feszültség vagy VHS hiba CMD8 parancs
20 = R7 meghatározatlan hiba CMD8 válasz
21 = Nem támogatott FAT32 gyökér cluster számát (nem 2)
22 = R3 kártyával bekapcsolás foglalt (OCR.31 = 0)
23 = Nem támogatott fájlrendszer
24 =
25 =
26 = A fájl bejegyzés talált
27 = A könyvtár bejegyzést talált
28 = A rendelkezésre álló (korábban törölt) könyvtárban helyet talált
29 = Nem támogatott szektorok számát klaszter
30 =
31 = EOC End Of Cluster lánc jelző található
32 = EOD End Of Directory jelző található
33 = Alkönyvtár. vagy .. bejegyzést találtam
34 = A kötet ID talált
35 = Nem támogatott szektor mérete
36 = Hosszú fájlnév találtam
37 =
38 =
39 =
40 =
41 = Adat elutasította CRC hiba miatt
42 = Adat elutasította Write Error miatt
43 = Szabad FAT bejegyzés található
44 = vége FAT és nem szabad belépés talált (partíció tele)
45 =
46 = kerestünk a teljes FAT16 gyökérkönyvtárba, de nem talált, amit kerestünk
47 = Szülő könyvtár mutató talált
48 = A fájl vagy alkönyvtár található
Állapot bitek:
Sdeof = 1 : EOF jelző (Vége jelző)
Sdreaddestination : 0 = Sdbuffer, 1 = Sdfatbuffer Olvasáskór (Választás a 2 Adat(512Bytes) buffer kőzőt)
Sdwriteorigin : 0 = Sdbuffer, 1 = Sdfatbuffer Íráskor (Választás a 2 Adat(512Bytes) buffer kőzőt)
Sdcreatemode : 0 = Fájl 1 = alkönyvtár
Sdclosefile = 1 : Lezárja az aktuális fájlt
Sdpartitionfull = 1 : a partíció tele van (nincs több szabad FAT bejegyzés)
Sdsavedatasector = 1 : menteni az aktuális adatok szektorba
Sdfatcontinue = 1 : tovább hurok segítségével az aktuális FAT szektor
Sddirlistdirection : 0 = előre, 1 = hátra Haladás iránya jelző
Sddirliststartpoint = 1 : A könyvtár hátra lista elérte kiindulópontja
Sddirlistendpoint = 1 : A könyvtár előre lista végére ért pontja
Sddirlistoutside = 1 : Vagyunk kívül a könyvtár klaszter tömb, amikor felsorolja a könyvtárat
Sdlfncontinue = 1 : Folyamatos összeállítása vagy nyomtatás a hosszú fájlnév
Sdlfnfound = 1 : Utolsó könyvtár bejegyzést a hosszú fájlnév találtak
Sdappendcontinue = 1 : Továbbra is összehasonlítja a fájlnév
Sdappendfound = 1 : Fájlt talált
Sderaseall = 1 : Minden adatot töröl szektorban is