• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Problem z odczytem danych z karty SD do tablicy typu char
#2
Witam
Masz za mało ram, no przynajmniej na NANO jest za mało, Leonardo ma 500B więcej, dlatego dojeżdżasz aż do tego momentu. Nano mi klęka około 18 pozycji pliku key.txt.
To że po kompilacji pokazuje, że masz dostępne jeszcze 1kb nie znaczy, że to wystarczy na działanie programu. Jak łatwo sprawdzić, gdy tworzysz tablicę stringów jest rezerwowane na każdy element tablicy 6B, bo jest on tworem rezerwującym pamięć dynamicznie, jak zaczynasz do niej wpisywać kolejne literki to rozmiar zajętego ram rośnie, a niektóre linijki w pliku mają po 10 znaków. Nano rozjeżdża ram około 20 pozycji tego pliku czyli wczytaniu około 200B.
Leonardo da radę pewnie wczytać wszystkie i zostaje mu w tym momencie jakieś 200B. A jest drugi plik...
Nie możesz też zadeklarować tablicy char i oczekiwać, że tak oszukasz przeznaczenie. To jest obiekt jednowymiarowy posiadający 50 pol. Każde pole jest na jeden znak char. W każde pole po kolei nadpisujesz kolejny znak z linii pliku, kończąc znakiem NL (to pewnie te kwadraciki). I to on tylko tam jest. Potem przy odczycie ładnie ci to każde pole z powrotem odczytuje, oprócz ostatniego gdzie jest pewnie EndOfFile, eof, - f. Pewnie chodziło Ci o tablicę tablic 10 elementowych, tak by do każdego indeksu i wpisać literki pod indeksy j. No taka tablica zajęłaby 500B i od razu byś widział, że to nie zadziała. Akurat na te dane może być tablica jednowymiarowa, są tam ciągi cyfr, wystarczy zrobić tablicę elementów typu uint32_t, odczytać, przekonwertować na liczbę i taka tablica zajmie 4x50=200bajtów = 0RAM
A to jest tylko sekcja setup. Jeśli będziesz chciał robić jakieś operacje i wywoływać funkcje?
Jeśli chcesz mieć te kody używane w programie to można je zadeklarować i umieścić we flash procesora, wczytywać tylko potrzebne na daną chwilę. Będzie działać oczywiście wolniej.
Można też wywalić słowo KEY_, dodawać je gdy chcesz pokazać coś/gdzieś, pozostałe znaki ograniczyć do 4 i taka tablica dwuwymiarowa zajęłaby mniej niż tablica dynamicznych stringów. Czy zadziała zależy od reszty kodu.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
  


Wiadomości w tym wątku
RE: Problem z odczytem danych z karty SD do tablicy typu char - przez kaczakat - 09-02-2018, 02:50

Skocz do:


Przeglądający: 1 gości