Witam
Mam dosyć spory problem z parsowaniem tekstu, mianowicie użytkownik może w terminalu wpisać sobie taką o to składnie.
Silnik 3,5;Silnik 5,25;Silnika 7,45;Ma to podzielić na "Silnik 3,5" , "Silnika 5,25" itp;
Robię to w następujący sposób:
-gdy z USARTa przychodzi ciąg znaków zakończonych znakiem '\0' wychodzi do przerwania gdzie tworzona jest tablica (buforRx) przesłanych znaków, przekazywanych dalej do pętli głównej:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
W pętli głównej obsługa tego wygląda tak:
MAIN język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Po krótce dzięki temu kodowi bd miał:
(PRZED wywołaniem CreateChild)
tprs->string[0]="Silnik 3,5"
tprs->string[1]="Silnik 5,25"
tprs->string[2]="Silnika 7,45"
wszystko ładnie pięknie teraz tworze "dzieci"
(Wywołanie createChild)
na podstawie każdego ze stringów dzielę wq kryterium " ":
po takim sparsowaniu mam:
tprs->child[0]->string[0]="Silnik"
tprs->child[0]->string[1]="3,5"
tprs->child[1]->string[0]="Silnik"
tprs->child[1]->string[1]="5,25"
Dobrze tak wyglądają funkcje:
Inicjująca język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Tworząca dzieci język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Teraz pytanie w jaki sposób zwolnić tą pamięć przed przybyciem paczki do parsowania? Mam napisane coś takiego ale niestety
HardFault_Handler
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
tak wygląda deklaracja structury
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Bardzo proszę o pomoc naprawdę próbowałem wielu rzeczy, ale może mój zamysł w ogóle jest niepoprawny stąd te ceregiele. Wydaje mi się że to sprawa źle zwalnianych wskaźników bo w pewnych przypadkach program działa tzn kilka razy odbierze i przerobi polecenia, a np za 3 -4 się wysypie ;/
Pozdrawiam.