logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

atmega8 - Petitfs funkcja pf_read zwraca FR_NOT_OPENED.

jeff__ 11 Lis 2016 10:16 768 3
REKLAMA
  • #1 16053900
    jeff__
    Poziom 17  
    Witam, po długich bojach z petitem udało mi się dobrnąć do funkcji pf_read, która zwraca niestety FR_NOT_OPENED. Funkcje pf_mount oraz pf_open() zwracaja FR_OK.
    Poniżej kod:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod



    Zauważyłem że na końcu funkcji pf_open ustawiana jest flaga otwarcia pliku. Niestety kiedy w funkcji pf_read na samym poczatku sprawdzam stan tej flagi, to nie jest ona równa FA_OPENED co do prowadza do zwrócenia wartości FR_NOT_OPENED przez funkcje pf_open().

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod





    Proszę o wskazówkę :)
  • REKLAMA
  • #2 16060202
    Marico
    Poziom 20  
    Skąd wiesz, że res po pf_mount(&fs) jest FR_OK? W kodzie tego nie sprawdzasz. Po za tym wywoływanie pf_read bez wcześniejszego sprawdzenia czy pf_open zwraca FR_OK to tylko proszenie się o problemy.
  • REKLAMA
  • #3 16060561
    jeff__
    Poziom 17  
    Jeśli chodzi o sprawdzenie czy pf_open zwraca FR_OK to sprawdzam to i sygnalizuje poprzez gaszenie diody w tym miejscu:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
    Tak samo postąpiłem wcześniej w przypadku funkcji pf_mount. Po tym jak zwróciła mi FR_OK dopisałem dalszą część kodu czyli wywołanie funkcji pf_open.
  • #4 16060594
    Marico
    Poziom 20  
    Sprawdzanie nie polega na tym, by tylko zweryfikować stan "prawidłowy". Gdzie obsługa sytuacji, gdy pf_open zwróci błąd, gdy próba otwarcia pliku się nie powiedzie (bo np. nie ma takiego pliku)? Twierdzisz, że w kodzie było wcześniej sprawdzane res po pf_mount, po co zatem to usunales? Jeśli Twój prototyp w połączeniach jest też tak chaotycznie zbudowany, to ja nie mam pewności, czy na pewno karta sd gwarantuje poprawne zainicjowanie za każdym razem (tym bardziej by sobie pozwolić na zignorowanie w kodzie sprawdzania co zwraca pf,_mount). Dla mnie w kodzie tego nie ma, zatem szukanie odpowiedzi na pytanie, dlaczego któraś z kolejnych funkcji api nie działa nie ma najmniejszego sensu, jeśli cały łańcuch wywoływanych funkcji nie jest prawidłowo weryfikowany. Skąd wiesz, że pf_open zwraca FR_OK skoro w sprawdzaniu pf_read używasz tej samej diody do migania?
REKLAMA