Bascom 2.0.5.0 és az új SD kártya / FAT kezelő
A FileDelete rutin az nincsen megírva sajnos!
De ha már úgyis körbeforgó adat tárolást akarsz megvalósítani, felülírhatod a már nem szükséges fájl adatait, az újabbal.
Nem ismerem a feladatot, de Pl.:
Havi bontásban lehetnének: Adatok1 -> Adatok31 nevű fájlok, és dátum szerint mindig az aktuálisat nyitod meg írásra.
Eben csak az a bibi, ha nagyobb az új fájl mérete, mint a régi.
Mert nem tudom, ezt le tudja e kezelni a KokkeKat_FAT-free_SD_lib_code.bas.
Vagy felül írja az utána következő fájlt?
(Lehet, hogy nem véletlenül maradt ki a fájltörlés?)
Bár fájl hozzá írás parancs van, (Example_APPEND_TO_FILE.bas) akkor elvileg megkel keresnie a szabad szektort, ha töredezet lesz a helyfoglalás.
Tesztelni kel!
De ha már úgyis körbeforgó adat tárolást akarsz megvalósítani, felülírhatod a már nem szükséges fájl adatait, az újabbal.
Nem ismerem a feladatot, de Pl.:
Havi bontásban lehetnének: Adatok1 -> Adatok31 nevű fájlok, és dátum szerint mindig az aktuálisat nyitod meg írásra.
Eben csak az a bibi, ha nagyobb az új fájl mérete, mint a régi.
Mert nem tudom, ezt le tudja e kezelni a KokkeKat_FAT-free_SD_lib_code.bas.
Vagy felül írja az utána következő fájlt?
(Lehet, hogy nem véletlenül maradt ki a fájltörlés?)
Bár fájl hozzá írás parancs van, (Example_APPEND_TO_FILE.bas) akkor elvileg megkel keresnie a szabad szektort, ha töredezet lesz a helyfoglalás.
Tesztelni kel!
A hozzászólást 2 alkalommal szerkesztették, utoljára kapu48 2012. október 31. szerda, 18:44-kor.
Ujabb problémába futottam bele. Amikor a log fájlba a következő bejegyzést írja a program (append) kb 0,5 másodpercig tat, azonban ha a file mérete 0,5M körüli akkor már 4...5 másodperc megy el vele, egy 6Mb-os fájlhoz hozzáírni pedig kb 1 percre lefoglalja a processzort.
Most ez egyszerűen ennyire lassú lenne , vagy valamit nem jól csinálok?
Írtam egy szubrutint ami megnézi, hogy létezik-e a file, ha nem akkor létrehozza, ha igen akkor hozzáfűz (mint a klasszikus dos-os megnyitás), majd a dátumból generált fájlnévvel hívom meg.
Ez működik, de lassú, és ritkán filerendszer hiba keletkezik (win simán javítja).
Most ez egyszerűen ennyire lassú lenne , vagy valamit nem jól csinálok?
Írtam egy szubrutint ami megnézi, hogy létezik-e a file, ha nem akkor létrehozza, ha igen akkor hozzáfűz (mint a klasszikus dos-os megnyitás), majd a dátumból generált fájlnévvel hívom meg.
Kód: Egész kijelölése
Sub Fileiras2(byref Filenme As String) 'tempstr buffer kírása a fájlba (egymasra definialt string <-> byte tömb)
Local File_letezik As Byte '1-ha a file létezik, 0-ha nem
Local I As Word 'lokális ciklusváltozó
File_letezik = 0 'ha a file már létezik akkor 1 lesz '
I = 1 'ciklusváltozó kezdőérték
'megnezzük létezik-e már a file
Sdstatus = 0 : Sddirectorymode = 0 : Sdclusterd = 0 : Sdsecincluster = 1 : Sdbufferpos = 1
Sdentrynames = Filenme ' File name, upper case only
If Sdc_fs_ok = 1 Then
Gosub Sdfindentryindirectory ' ha a filerendszer elérhető
If Sdstatus = 48 Then File_letezik = 1 ' File found
'Fileírás adatai
Sdentrynames = Filenme
Sdyear = 2011 : Sdmonth = 2 : Sdday = 16 : Sdhours = 00 : Sdminutes = 30 : Sdseconds = 32 : Sdstatus = 0
Gosub Sdreadfsinfo
If Sdstatus = 0 Then
If File_letezik = 0 Then 'A file még nem létezik
Sdcreatemode = 0 : Sdstartdirclusterd = 0 ' Create file
Gosub Sdcreatefileordir ' Find free FAT entry, find free directory entry, and save the directory entry back to the SD card
For I = 1 To 512 'sdbuffer nullázása
Sdbuffer(sdtempw2) = 0
Next I
Else 'A file már létezik
Gosub Sdpreparetoappend 'folytatás előkészítése
End If
'A file elérhető, írhato....
If Sdstatus = 0 Then
Sdclosefile = 0 : I = 1
While Sdclosefile = 0 And I < Puffermeret1 And Tempbyte1(i) > 0 'Tempbyte puffer kiirása egyesével
Sdbyterw = Tempbyte1(i)
Gosub Sdwritebyte
Incr I
Wend
Gosub Sdfinalizeafterwriting ' After writing the last byte, close the file
Gosub Sdwritefsinfo ' Save the updated fsinfo variables back
End If
End If
End If
End Sub
Nemsokára kiderül, (már ha sikerül beüzemelni) hogy jó-e arra amire nekem kellene. Igazából nincs szükségem 2Gb-nál több adat tárolására, csakhogy előbb-utóbb valószinüleg nem lehet majd kapni "ilyen kicsi kapacitású" SD kártyákat (mint ahogy pl. a 4GB altti pendrive már manapság is ritka) Még az is lehet, hogy több particióra osztom az SDHC-t, és az első partíció amire írok 2Gb alatti lesz....Robert írta:....nem lett teljeskörűen tesztelve!
Használtad már ezt a könyvtárat? Mik a tapasztalataid ezzel?
Ha már nálam a HW SPI lábakon lóg az SD foglalat, akkor hardweresen használnám. Jelenleg 14,7xxxMHz-es a quartz és clockrate=4 beállításban teljesen jól működött az MMC könyvtárral. Ugyanilyen beállítás mellett a KokkeKat append-je (bár működött, de) használhatatlanul lassú volt.
Meglátjuk az SDHC-vel mire jutok.... Mindenesetre megfogadom a tanácsod.
Ha már nálam a HW SPI lábakon lóg az SD foglalat, akkor hardweresen használnám. Jelenleg 14,7xxxMHz-es a quartz és clockrate=4 beállításban teljesen jól működött az MMC könyvtárral. Ugyanilyen beállítás mellett a KokkeKat append-je (bár működött, de) használhatatlanul lassú volt.
Meglátjuk az SDHC-vel mire jutok.... Mindenesetre megfogadom a tanácsod.