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? 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 11 cze 2025, o 08:02


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
    Autor Wiadomość
    PostNapisane: 20 sty 2018, o 19:20 
    Offline
    Użytkownik

    Dołączył(a): 04 cze 2013
    Posty: 517
    Pomógł: 26

    Koledzy podpowie ktoś czy w dobrym miejscu namierzyłem błąd? Prawdopodobnie wyłożyłem się na wskaźnikach :)
    To moja struktura
    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 wysyłam dane po udp

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

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

    _________________
    Przewodnik|Sterownik akwariowy



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 20 sty 2018, o 21:17 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 23 paź 2014
    Posty: 1036
    Lokalizacja: Trójmiasto
    Pomógł: 190

    Ale wskaźnik nie może zawierać "moja_nazwa" ponieważ jest wskaźnikiem i może zawierać jedynie adres pamięci w którym znajdować się może "moja_nazwa"
    Więc najpierw musisz utworzyć zmienną, która będzie zawierała coś co nazywasz "moja nazwa" a dopiero możesz we wskaźniku umieścić adres pamięci pod którym jest zapisany ww coś "moja_nazwa"



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 sty 2018, o 10:25 
    Offline
    Użytkownik

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

    xentis napisał(a):
    Więc najpierw musisz utworzyć zmienną, która będzie zawierała coś co nazywasz "moja nazwa" a dopiero możesz we wskaźniku umieścić adres pamięci pod którym jest zapisany ww coś "moja_nazwa"

    W sumie autor wątku tak właśnie robi (przynajmniej tak to wygląda). Rozumiem to tak, że zmienna reszta jest wskaźnikiem na ciąg znaków odebranej komendy AT. Funkcja strtok() zwraca adres początku podciągu "moja_nazwa", który to adres zostaje przypisany do elementu struktury konfiguracja.savetranslink (która, jak się domyślam, jest zdefiniowna jako globalna) i odbywa się to prawidłowo skoro:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Moim zdaniem problemem może być czas życia zmiennej wskazywanej przez wskaźnik reszta. Istnieje prawdopodobieństwo, że w momencie wysyłania:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
    zmienna wskazywana przez reszta już nie istnieje (np. była zadeklarowana jako zmienna lokalna i uległa degradacji po zakończeniu funkcji). Autor wątku przedstawił zbyt mało kodu, aby to można było ocenić.

    Inną przyczyną może być to, że od momentu przypisania wskaźnika do zmiennej konfiguracja.savetranslink do momentu wysłania (pakiet_str("+SAVETRANS:",konfiguracja.savetranslink);) zawartość ciągu, na który wskazuje konfiguracja.savetranslink, została zmieniona. Ponownie dodam, że autor przedstawił zbyt mało informacji, aby jednoznacznie zdiagnozować problem.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 sty 2018, o 11:51 
    Offline
    Użytkownik

    Dołączył(a): 04 cze 2013
    Posty: 517
    Pomógł: 26

    andrews napisał(a):
    [quote="xentis"
    Moim zdaniem problemem może być czas życia zmiennej wskazywanej przez wskaźnik reszta. Istnieje prawdopodobieństwo, że w momencie wysyłania:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
    zmienna wskazywana przez reszta już nie istnieje (np. była zadeklarowana jako zmienna lokalna i uległa degradacji po zakończeniu funkcji). Autor wątku przedstawił zbyt mało kodu, aby to można było ocenić.

    Inną przyczyną może być to, że od momentu przypisania wskaźnika do zmiennej konfiguracja.savetranslink do momentu wysłania (pakiet_str("+SAVETRANS:",konfiguracja.savetranslink);) zawartość ciągu, na który wskazuje konfiguracja.savetranslink, została zmieniona. Ponownie dodam, że autor przedstawił zbyt mało informacji, aby jednoznacznie zdiagnozować problem.


    Kolego masz rację teraz sobie to sprawdziłem i między wysłaniem komendy AT a wysłaniem AVRGET wysyłane sa również inne komendy a że "reszta" jest lokalna więc jest podmieniana :shock: :oops:

    Czy jedynym rozwiązaniem jest napisanie funkcji która będzie mi kopiowała znak po znaku do tablicy aby nie stracić zawartości w postaci ciągu znaków "moja_nazwa"?

    Moje założenie jest takie wysyłam komendę z ciągiem znaków "moja nazwa" i chce ja przechowywać w strukturze

    _________________
    Przewodnik|Sterownik akwariowy



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 sty 2018, o 12:00 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 23 paź 2014
    Posty: 1036
    Lokalizacja: Trójmiasto
    Pomógł: 190

    andrews napisał(a):
    W sumie autor wątku tak właśnie robi (przynajmniej tak to wygląda).
    być może, ale samo nazewnictwo:
    matekogon napisał(a):
    wsk1 zawiera moja_nazwa
    nasuwa podejrzenie, że autor albo z przyzwyczajenia źle nazywa to co przechowuje wskaźnik, albo do końca nie wie jak wskaźniki działają. Wskaźnik może pokazywać na daną moja_nazwa a nie ją zawierać. Wiem że to może czepialstwo ale z drugiej strony to forum przeglądają również początkujący którzy niekiedy posty innych traktują jako konkretne przykłady więc błędne nazewnictwo niepotrzebnie utrwala błędne pojęcia.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 sty 2018, o 12:13 
    Offline
    Użytkownik

    Dołączył(a): 04 cze 2013
    Posty: 517
    Pomógł: 26

    xentis napisał(a):
    że autor albo z przyzwyczajenia źle nazywa to co przechowuje wskaźnik, albo do końca nie wie jak wskaźniki działają.
    :oops:

    _________________
    Przewodnik|Sterownik akwariowy



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 sty 2018, o 13:48 
    Offline
    Użytkownik

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

    xentis napisał(a):
    andrews napisał(a):
    W sumie autor wątku tak właśnie robi (przynajmniej tak to wygląda).
    być może, ale samo nazewnictwo:
    matekogon napisał(a):
    wsk1 zawiera moja_nazwa
    nasuwa podejrzenie, że autor albo z przyzwyczajenia źle nazywa to co przechowuje wskaźnik, albo do końca nie wie jak wskaźniki działają. Wskaźnik może pokazywać na daną moja_nazwa a nie ją zawierać. Wiem że to może czepialstwo ale z drugiej strony to forum przeglądają również początkujący którzy niekiedy posty innych traktują jako konkretne przykłady więc błędne nazewnictwo niepotrzebnie utrwala błędne pojęcia.

    Niewątpliwie komentarze nie są adekwatne do tego, co kod faktycznie robi i bardzo dobrze, że na to zwróciłeś uwagę. Nie było moim zamiarem w jakiś sposób zdyskredytować Twojej odpowiedzi. Starałem się po prostu wskazać możliwe przyczyny nieprawidłowego działania kodu. Potraktowałem to jako uzupełnienie Twojej odpowiedzi, a nie jako jej krytykę :)

    Mam wrażenie, że chyba trochę źle to odebrałeś ;)



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

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 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