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



Teraz jest 30 lis 2024, o 06:31


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
Autor Wiadomość
PostNapisane: 15 sty 2015, o 17:38 
Offline
Nowy

Dołączył(a): 05 sty 2013
Posty: 19
Lokalizacja: Warszawa
Pomógł: 0

Cześć,
Mam problem ze skopiowaniem z tablicy znaków jej fragmentu. Interesuje mnie to wszystko co znajduje się PRZED przecinkiem. Program działa, lecz po pewnym czasie resetuje lub zawiesza się procesor. Dodatkowo przy linijce
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
kompilator wyrzuca warning: "assignment makes integer from pointer without a cast" Do tablicy "bufor_danych" odbieram dane z UART, i do tej pory wszystko jest ok. Czym to może być spowodowane ?


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: 15 sty 2015, o 18:02 
Offline
Użytkownik

Dołączył(a): 20 wrz 2013
Posty: 647
Zbananowany użytkownik

Pomógł: 101

peter507 napisał(a):
"assignment makes integer from pointer without a cast"

Odjęcie dwóch wskaźników daje wynik typu integer a ty przypisujesz wynik do
peter507 napisał(a):
char *ret;


peter507 napisał(a):
Program działa, lecz po pewnym czasie resetuje lub zawiesza się procesor


Nic dziwnego skoro do tablic bufor_danych[31] i pomiar[20] funkcja clearCharBuff wpisuje 35 znaków.

_________________
+++++[>++++<-]>[>++++++<-]>.---------.+++.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 sty 2015, o 18:18 
Offline
Nowy

Dołączył(a): 05 sty 2013
Posty: 19
Lokalizacja: Warszawa
Pomógł: 0

xor napisał(a):
peter507 napisał(a):
"assignment makes integer from pointer without a cast"

Odjęcie dwóch wskaźników daje wynik typu integer a ty przypisujesz wynik do
peter507 napisał(a):
char *ret;


peter507 napisał(a):
Program działa, lecz po pewnym czasie resetuje lub zawiesza się procesor


Nic dziwnego skoro do tablic bufor_danych[31] i pomiar[20] funkcja clearCharBuff wpisuje 35 znaków.


AD1. Przypisuje do zmiennej "pozycja" która faktycznie nie jest integer'em, zmieniałem na uint8_t ale nic nie pomogło. Dalej wyrzuca ten sam warning.

AD2. Niestety usunięcie funkcji clearCharBuff powoduje ten sam efekt. Procesor dalej się resetuje. Nie ma to zauważalnego wpływu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 sty 2015, o 21:04 
Offline
Użytkownik

Dołączył(a): 20 wrz 2013
Posty: 647
Zbananowany użytkownik

Pomógł: 101

peter507 napisał(a):
Przypisuje do zmiennej "pozycja" która faktycznie nie jest integer'em, zmieniałem na uint8_t ale nic nie pomogło. Dalej wyrzuca ten sam warning.

uint8_t to unsigned char czyli liczba 8 bitowa bez znaku a wynikiem odejmowanie jest int czyli liczba szesnastobitowa ze znakiem.

peter507 napisał(a):
Niestety usunięcie funkcji clearCharBuff powoduje ten sam efekt. Procesor dalej się resetuje. Nie ma to zauważalnego wpływu.

No to masz gdzieś buga.
Jak dla mnie operacje w liniach 41-43 i w konsekwencji dalej np. 51 i dalej są podejrzane. Co będzie jak na wejściu nie będzie przecinka i strchr zwróci NULL?

_________________
+++++[>++++<-]>[>++++++<-]>.---------.+++.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 sty 2015, o 21:52 
Offline
Użytkownik

Dołączył(a): 22 gru 2013
Posty: 296
Lokalizacja: Szczecin
Pomógł: 47

sprawdź ten kod:
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: 15 sty 2015, o 22:18 
Offline
Nowy

Dołączył(a): 05 sty 2013
Posty: 19
Lokalizacja: Warszawa
Pomógł: 0

Kirsh - faktycznie, po zmianie "pozycja" na char, nie wyrzuca warning'ów. Co prawda dopiero jutro będę w stanie sprawdzić czy to pomogło.

Xor - funkcja jest zabezpieczona że jeśli nie będzie przecinka, to w ogóle w ten warunek program nie wejdzie, więc taka sytuacja się nie zdarzy.

EDIT. Niestety po zmianie na "char pozycja;" właśnie ta zmienna z przyjściem każdej nowej ramki zwiększa się o jeden, a tak nie powinno być ponieważ długość ramki i pozycja przecinka się nie zmienia.



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: 6 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO