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

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA w 2025? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 18 maja 2025, o 13:20


    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 ] [ Zaznacz wszystko ]
    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 ] [ Zaznacz wszystko ]
    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ł: Google [Bot] i 11 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