Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 2 kwi 2026, o 18:18


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 
Autor Wiadomość
PostNapisane: 7 lut 2017, o 22:46 
Offline
Użytkownik

Dołączył(a): 27 maja 2014
Posty: 75
Pomógł: 0

Witam wszystkich :)

Mam dosyć wydaje się trywialny problem, ale prosiłbym o podpowiedź bo nie wiem jak rozwiązać problem. Mianowicie Moduł Atnel Wifi232 pracuje jako client www, funkcja parsująca zaczerpnięta z poradnika Mirka.

Ze swojej stronki chcę wyłuskać 2 pierwsze znaki (34) jako wartość zadanej temperatury
Składnia: [ Pobierz ] [ Ukryj ]
język html4strict
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
,
"napełniam" sobie strukturę TPSTR przyciskiem, no i w pętli głównej warunek
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

no i mam problem, ponieważ w każdym innym miejscu programu wyświetlam sobie zmienną "temperatura" (mimo że w while widzę że dane elegancko nadlatują - wyświetlam zmienną "cn") i równa jest ona 0
a w momencie kiedy wyświetlę zmienną "temperatura" w warunku if (str_parse (cn, &tpstr)) to działa OK.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Siedzę już nad tym trochę, dlatego prosiłbym o wskazówkę jak mam poprawnie zapisać do zmiennej "wyłuskaną" wartość. Z góry dziękuję!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lut 2017, o 09:03 
Offline
Użytkownik

Dołączył(a): 07 cze 2016
Posty: 563
Pomógł: 143

Pokazałeś za mało kodu, aby jednoznacznie odpowiedzieć.

Gdzie znajduje się ten fragment kodu, który przedstawiłeś i w którym przypisujesz wartość zmiennej temperatura?
Gdzie masz deklarację zmiennej temperatura?

Objawy moim zdaniem mogą wskazywać na to, że wewnątrz funkcji, w której znajduje się fragment kodu obliczający temperaturę (kod, który przedstawiłeś), masz deklarację zmiennej lokalnej o nazwie takiej samej, jak zmienna globalna (temperatura).



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lut 2017, o 09:28 
Offline
Użytkownik

Dołączył(a): 27 maja 2014
Posty: 75
Pomógł: 0

a więc... zmienna "temperatura" zadeklarowana jest w pliku nagłówkowym
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


a tu cała funkcja, która jest wywoływana w pętli głównej programu:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lut 2017, o 10:51 
Offline
Użytkownik

Dołączył(a): 07 cze 2016
Posty: 563
Pomógł: 143

Do ilu plików *.c dołączasz ten plik nagłówkowy?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lut 2017, o 11:03 
Offline
Użytkownik

Dołączył(a): 27 maja 2014
Posty: 75
Pomógł: 0

andrews napisał(a):
Do ilu plików *.c dołączasz ten plik nagłówkowy?


do 4, i na 100% we wszystkich tych plikach nie ma zmiennej lokalnej o tej samej nazwie



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lut 2017, o 11:37 
Offline
Użytkownik

Dołączył(a): 07 cze 2016
Posty: 563
Pomógł: 143

Spróbuj zdefiniować w jednym z tych plików *.c zmienną globalną, np.:
uint8_t temperatura = 0;
a w pliku nagłówkowym zmień uint8_t temperatura; na:
extern uint8_t temperatura;



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lut 2017, o 19:24 
Offline
Użytkownik

Dołączył(a): 27 maja 2014
Posty: 75
Pomógł: 0

Tak zrobiłem i niestety efekt w dalszym ciągu taki sam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lut 2017, o 20:58 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

Sprawdź czy jest tak samo po Clean Project.
Ewentualnie Index->Freshen All Files czy Index->Update with Modified Files


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lut 2017, o 21:15 
Offline
Użytkownik

Dołączył(a): 27 maja 2014
Posty: 75
Pomógł: 0

anshar napisał(a):
Sprawdź czy jest tak samo po Clean Project.
Ewentualnie Index->Freshen All Files czy Index->Update with Modified Files


To też nie pomogło



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 lut 2017, o 06:50 
Offline
Użytkownik

Dołączył(a): 07 cze 2016
Posty: 563
Pomógł: 143

Na pewno masz jakiś inny błąd, który powoduje takie objawy. Może to być nawet błąd w ogólnej koncepcji programu, np. zbyt dużo zmiennych może powodować nadmierną zajętość pamięci RAM i w efekcie przepełnienie stosu, który nadpisuje zawartość niektórych zmiennych. Trudno jednak będzie coś stwierdzić na zasadzie zgadywanki, nie mając wglądu w pełny kod i ogólną strukturę programu.

Jeśli nie chcesz publikować na forum całego kodu lub naruszyłoby to prawa autorskie lub po prostu jest on zbyt obszerny, to ogranicz go do minimum, które po skompilowaniu wykazuje te same objawy i przedstaw to do analizy.

Czasami podczas takiej operacji (ograniczania kodu) okazuje się, że w pewnym momencie wszystko zaczyna działać prawidłowo. Można w ten sposób ograniczyć fragment kodu, który może powodować problemy lub naprowadzi na przyczynę ich powstawania.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 13 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO