Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Obsługa karty SD FAT32 plik txt wskaźnik końca tekstu

29 Kwi 2012 17:17 1124 4
  • Poziom 20  
    Witam
    Uruchomiłem obsługę karty SD w C na Atmega, kompilator CodeVision 2 z pomocą biblioteki http://elm-chan.org.
    Mam problem z obsługą pliku txt, tzn. jak dopisać tekst do istniejącego tekstu w pliku?
    Za każdym razem gdy otwieram plik funkcją fopen wskaźnik read/write ustawiany jest na początek pliku. Jak przestawić wskaźnik na koniec tekstu tak aby przy kolejnym otwarciu dodawał nowy tekst do istniejącego?
    Coś mi świta funkcja f_lseek ale nie potrafię jej zastosować.
    Trzeba zmieniać rozmiar pliku czy zrobi to on automatycznie?
    Pozdrawiam
  • Poziom 30  
    To zależy od tego, jakiej biblioteki używasz. Ta "petit" nie potrafi zmienić rozmiaru pliku, ta "pełna" - robi to bez problemu.
  • Poziom 20  
    Używam pełnej FATFS.
    Wymyśliłem coś takiego:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Takie coś mi działa z tym, że dopisuje do końca pliku a nie tekstu. Mogę mieć połowe pliku zapisane danymi a reszta to spacje i te spacje zostają.
    Czy jedyna możliwość to sprawdzanie każdego znaku?

    Jeszcze jedno pytanie, czy funkcja disk_timerproc() wywoływana co 10ms musi być wywoływana non stop czy tylko w momentach kiedy korzystamy z karty SD?
    Pozdrawiam
  • Poziom 30  
    Ja mam tak (w skrócie):
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Funkcja disk_timerproc odpowiada za wykrywanie włożenia karty i za timeouty. Nie musi być wywoływana, jeśli nie korzystasz z karty. Co do spacji - takie działanie jakie opisujesz jest jedynym prawidłowym. Funkcje nie mogą same z siebie zadekretować, że spacje można nadpisywać.