Oldal: 3 / 3
Elküldve: 2012. október 31. szerda, 18:22
Szerző: kapu48
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!
Elküldve: 2012. október 31. szerda, 18:34
Szerző: Robert
A FAT alatt a törlés nem azt jelenti, hogy az első karaktere szigma jel lesz?
Elküldve: 2012. október 31. szerda, 20:36
Szerző: kapu48
Azt hiszem átgondolatlan volt az előző javaslatom!
Mert nincsen ellenőrzés, hogy létezik már adott nevű fájl.
Így csak kapsz még 1 Directory bejegyzést ismétlődő névvel.
(A DOS-os file kezelés minden Extra szolgáltatásai itt nem fértek bele a szűkös memóriába.)
Elküldve: 2012. november 6. kedd, 13:07
Szerző: ekkold
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.
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
Ez működik, de lassú, és ritkán filerendszer hiba keletkezik (win simán javítja).
Elküldve: 2012. november 8. csütörtök, 14:20
Szerző: ekkold
Kipróbáltam az AVRDOS-t. Sokkal gyorsabb! Azonban alapból az MMC.LIB-el csak a 2GB-os és kisebb SD kártyák működnek. Tud valaki segíteni az MMCSD_HC.LIB beszerzésében?
Elküldve: 2012. november 8. csütörtök, 18:11
Szerző: Robert
www.mcselec.com
De NEM támogatott a nagyobb kártya....
+ AVR-DOS: Not for businesss!
Elküldve: 2012. november 8. csütörtök, 18:15
Szerző: ekkold
Ugy tudtam hogy a 2Gb felettiek az SDHC kártyák, ha nem támogat nagyobbat akkor mire való az MMCSD_HC.LIB ? Miben tud többet, vagy miben más mint az amit eleve tartalmaz a bascom?
Elküldve: 2012. november 8. csütörtök, 18:32
Szerző: Robert
Crosspostért :
A nagyobb kártyákhoz _utólag_ hackelték, de nem lett teljeskörűen tesztelve!
Elküldve: 2012. november 8. csütörtök, 19:52
Szerző: ekkold
Robert írta:....nem lett teljeskörűen tesztelve!
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....
Elküldve: 2012. november 8. csütörtök, 19:56
Szerző: Robert
Csinálj teszteket. Fontos: a nagy spi sebességet nem bírja a sdhc köyvtár!
Így SW alapú, vagy clockrate=16 vagy ennél nagyobbat kell megadni!
Elküldve: 2012. november 8. csütörtök, 20:58
Szerző: ekkold
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.
Elküldve: 2012. november 8. csütörtök, 21:33
Szerző: Robert
HW lábakon van nálam is. Így akár HW, akár SW alapon is használhatod...
Nálam 16 MHz-n fut ált a chip.
Néha FAT hibára futottam clockrate=4 esetén... Clockrate=16 és megjavult...
Elküldve: 2012. november 8. csütörtök, 22:41
Szerző: ekkold
Robert írta:....Néha FAT hibára futottam clockrate=4 esetén... Clockrate=16 és megjavult...
Közbenső értékeket (5...15) nem próbáltál? Jó lenne tudni hol a határ, hogy ne menjen el a szükségesnél több idő az írásra.
Elküldve: 2012. november 8. csütörtök, 22:53
Szerző: Robert
Nono!
Nincs közbenső érték. Lsd bascom súgó.
Kettő kitüntetett hatványai: 1,8,16,64... (fejből írtam)
Elküldve: 2012. november 9. péntek, 12:32
Szerző: kapu48
Nem értem mért OF-oltok?
A dosnak van külön topikja!
Ez itt inkább a: KokkeKat-ről szólna!