Mchal M. Lechanski
Guest
Sun Feb 06, 2022 1:39 pm
Dzień dobry,
Porzebuję wczytać plik konfiguracyjny z karty SD, pomijając jednocześnie
wszystki linie zakomentowane jakimś znakiem (kratka, średnik itp).
Czytam z pliku linia po linii i każdą przeczytaną linię dodaję do
ustawienia[numer_linii] = przeczytana_linia;
I to działa bez problemu.
Próbowałem sprawdzić jakim znakiem zaczyna się przeczytana_linia
if (!przezytana_linia.startsWith("#")) {
ustawienia[numer_linii] = przeczytana_linia;
}
ale to nie działa. W ustawienia[] pojawają się puste elementy, czasem do
ustawienia[] dodawany jest fragment linii zaczynającej się od #.
Spędziłem nad tym wczoraj za długo, więc pytam tutaj - są jakieś gotowe
biblioteki/funkcje/rozwiązania, których mógłbym użyć?
Używam ArduinoIDE jeśli to ma znaczenie.
Pomożecie? Z góry dziękuję.
--
Michał
Mirek
Guest
Sun Feb 06, 2022 2:04 pm
On 06.02.2022 13:39, Mchal M. Lechanski wrote:
Quote:
if (!przezytana_linia.startsWith("#")) {
ustawienia[numer_linii] = przeczytana_linia;
}
ale to nie działa. W ustawienia[] pojawają się puste elementy, czasem do
ustawienia[] dodawany jest fragment linii zaczynającej się od #.
Znak komentarza # moźe się pojawić w dowolnym miejscu - nie koniecznie
na początku linii.
Możesz też mieć puste linie, albo same znaki LF, których Windows nie widzi.
Albo przygotuj plik konfigu tip-top, albo parsuj porządnie - jest pewnie
kupa gotowych bibliotek, jeśli masz miejsce to użyj gotowca.
--
Mirek.
Cezar
Guest
Sun Feb 06, 2022 2:07 pm
On 06/02/2022 13:04, Mirek wrote:
Quote:
On 06.02.2022 13:39, Mchal M. Lechanski wrote:
if (!przezytana_linia.startsWith("#")) {
ustawienia[numer_linii] = przeczytana_linia;
}
ale to nie działa. W ustawienia[] pojawają się puste elementy, czasem
do ustawienia[] dodawany jest fragment linii zaczynającej się od #.
Znak komentarza # moźe się pojawić w dowolnym miejscu - nie koniecznie
na początku linii.
Możesz też mieć puste linie, albo same znaki LF, których Windows nie widzi.
Albo przygotuj plik konfigu tip-top, albo parsuj porządnie - jest pewnie
kupa gotowych bibliotek, jeśli masz miejsce to użyj gotowca.
np pierwszy z brzegu:
https://www.arduino.cc/reference/en/libraries/inifile/
stary grzyb
Guest
Sun Feb 06, 2022 4:25 pm
Quote:
if (!przezytana_linia.startsWith("#")) { ...
Pewnie to głupie, ale spróbuj '#' zamiast "#".
Mchal M. Lechanski
Guest
Sun Feb 06, 2022 6:04 pm
On 06/02/2022 13:04, Mirek wrote:
Quote:
On 06.02.2022 13:39, Mchal M. Lechanski wrote:
if (!przezytana_linia.startsWith("#")) {
ustawienia[numer_linii] = przeczytana_linia;
}
ale to nie działa. W ustawienia[] pojawają się puste elementy, czasem
do ustawienia[] dodawany jest fragment linii zaczynającej się od #.
Znak komentarza # moźe się pojawić w dowolnym miejscu - nie koniecznie
na początku linii.
Możesz też mieć puste linie, albo same znaki LF, których Windows nie widzi.
cały czytany plik to 7 linii z których 3 zaczynało się znakiem #, a 4
było bez niego. Żadna z linii nie miala tego znaku w środku, jak również
nie było pustych linii.
Quote:
Albo przygotuj plik konfigu tip-top, albo parsuj porządnie - jest pewnie
kupa gotowych bibliotek, jeśli masz miejsce to użyj gotowca.
Jakiekolwiek poszukiwania zestawu słów gdzie obok siebie występowały
arduno i comments zwracały informacje jak komentować linie w skedczu
Arduino. Daetgo o gotowca pytam tutaj. O pliku configu pisałem wyżej.
Wszystkim dziękuję bardzo za odpowiedzi, IniFile wydaje się
rozwiązaniem, który być może rozwiąże moj problem. Dziękuję za podpowiedź.
--
Michał
kriters
Guest
Sun Feb 06, 2022 10:24 pm
W dniu 06.02.2022 o 18:04, Mchal M. Lechanski pisze:
Quote:
On 06/02/2022 13:04, Mirek wrote:
On 06.02.2022 13:39, Mchal M. Lechanski wrote:
Wszystkim dziękuję bardzo za odpowiedzi, IniFile wydaje się
rozwiązaniem, który być może rozwiąże moj problem. Dziękuję za
podpowiedź.
Jedynym poprawnym rozwiązaniem jest zrozumienie dlaczego to nie działa.
Arduino ma spore możliwości debugowanie przez proste Serial.print(...).