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 21 kwi 2025, o 02:43


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 15 ] 
    Autor Wiadomość
    PostNapisane: 23 paź 2018, o 18:51 
    Offline
    Użytkownik

    Dołączył(a): 14 lis 2017
    Posty: 129
    Pomógł: 0

    Mam pytanie odnośnie funkcji SuperDebunce do obsługi przycisków, czy można za jej pomocą wywołać funkcję z argumentami?

    Np :
    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: 23 paź 2018, o 19:11 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 19 lis 2015
    Posty: 219
    Pomógł: 20

    Można, tyle że jako wskaźnik podajesz tylko nazwę funkcji bez argumentów

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


    Tyle że wcześniej musisz ją zadeklarować z przynajmniej typami argumentów

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


    Taki przykład z tymi zmiennymi



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 paź 2018, o 19:45 
    Offline
    Użytkownik

    Dołączył(a): 14 lis 2017
    Posty: 129
    Pomógł: 0

    A co z definicją funkcji SuperDebunce po zmianie deklaracji?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 paź 2018, o 19:50 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 19 lis 2015
    Posty: 219
    Pomógł: 20

    No jak zmieniasz deklarację to definicję też musisz zmienić


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 paź 2018, o 20:32 
    Offline
    Użytkownik

    Dołączył(a): 14 lis 2017
    Posty: 129
    Pomógł: 0

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



    ale teraz w treści funkcji:

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


    mam błąd

    ../funkcje.c:157:26: error: too few arguments to function 'push_proc'
    make: *** [funkcje.o] Błąd 1



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 paź 2018, o 20:47 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 19 lis 2015
    Posty: 219
    Pomógł: 20

    W definicji masz ze przekazujesz 3 argumenty a przy wywolaniu funkcji nic nie przekazujesz zadnego. Tak jakbys mial void



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 paź 2018, o 21:05 
    Offline
    Użytkownik

    Dołączył(a): 14 lis 2017
    Posty: 129
    Pomógł: 0

    jez2000 napisał(a):
    W definicji masz ze przekazujesz 3 argumenty a przy wywolaniu funkcji nic nie przekazujesz zadnego. Tak jakbys mial void


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


    to się kompiluje, ale nie o to chodzi


    myślałem, że może tak

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


    ale też źle
    mam błąd

    ../funkcje.c:145:28: error: 'x' undeclared (first use in this function)
    if(push_proc) push_proc(x,max,min); /* KEY_UP */



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 paź 2018, o 21:34 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 26 sty 2016
    Posty: 1168
    Lokalizacja: Kraków
    Pomógł: 93

    A tu masz błąd, że nie zadeklarowałeś zmiennej x



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 paź 2018, o 06:55 
    Offline
    Użytkownik

    Dołączył(a): 14 lis 2017
    Posty: 129
    Pomógł: 0

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


    Ok, mam funkcję jak powyżej jak ją odpalić za pomocą SuperDebunce?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 paź 2018, o 07:56 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 26 sty 2016
    Posty: 1168
    Lokalizacja: Kraków
    Pomógł: 93

    W kodzie z poprzedniego Twojego posta podajesz jako parametry wywołania funkcji zmienne x, max i min. Jakie wartości mają te zmienne przy wywołaniu?
    W tej funkcji:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
    zmienne x, min i max są znane. Natomiast nic mi nie wiadomo o tym, czy zmienne te są lokalne czy globalne.
    Wstawisz cały kod? Będzie można coś więcej powiedzieć.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 paź 2018, o 08:08 
    Offline
    Użytkownik

    Dołączył(a): 14 lis 2017
    Posty: 129
    Pomógł: 0

    main.c

    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.


    funkcje.h

    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.


    funkcje.c

    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.


    Przesyłam pliki, chodzi o to, aby po wciśnięciu klawisza KL1 wykonała się funkcja SuperDebunceP, do której przekazuję funkcję zwiększenie z 3 parametrami, x1, max i min, funkcja zwiekszenie ma tylko zwiększać x1 w zadanym przedziele pomiędzy min a max.

    W tej chwili SuperDebunce wywołuje funkcję zwiększenie ponieważ czyści się ekran i słychać bip() ( buzer), ale nie zwiększa mi wartości x1, przynajmniej na wyświetlaczu tego nie widzę.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 paź 2018, o 08:27 
    Offline
    Użytkownik

    Dołączył(a): 14 lis 2017
    Posty: 129
    Pomógł: 0

    kalani napisał(a):
    Superdebounce musi "znać" parametry wywoływanej funkcji. Jeśli są one zewnętrzne wobec funkcji debounce to trzeba je podać w parametrach tejże funkcji. Żeby nie zrujnować uniwersalności funkcji debounce, parametry te należy zamknąć w strukturze, i przekazywać ją do debounce jako wskaźnik. Oczywiście dalsze przekazanie parametru do funkcji zwrotnej także musi być przez wskaźnik. W ten sposób funkcja debunce nie musi nawet znać wewnętrznej budowy parametru i może pozostać uniwersalna dla dowolnego zestawu parametrów.



    Sam tego nie ogarnę nie mój poziom :(.
    Właśnie o to chodzi żeby SuperDebunce Była uniwersalna, ponieważ w trakcie programu chciałem parametry zmieniać.

    - trzeba utworzyć strukturę
    - ale jak wstawić parametry do SuberDebunce i funkcji zwrotnej ? - tego nie potrafię.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 paź 2018, o 08:35 
    Offline
    Użytkownik

    Dołączył(a): 14 lis 2017
    Posty: 129
    Pomógł: 0

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


    mam strukturę temperatura jak ją przekazać do SuperDebynceP?

    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: 24 paź 2018, o 09:20 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27375
    Lokalizacja: Szczecin
    Pomógł: 1043

    Krzycho69 napisał(a):
    mam strukturę temperatura jak ją przekazać do SuperDebynceP?

    Kolega na razie jak widzę KOMPLETNIE nie rozumie callbacków :( .... Po jasny gwint przekazywać do tej funkcji superdebounce jakieś dodatkowe argumenty - toż to nieporozumienie praktycznie ... Callback tu jest po to aby nie ruszać kodu funkcji a reszta ma być robiona w funkcji callbackowej czyli tej wywołanej ....

    To w niej jak kolega wyżej pisze możesz operować DOWOLNYMI zmiennymi - jakie tylko zechcesz (globalne - jakaś struktura itp) ... zapomnij najlepiej o przekazywaniu dodatkowych argumentów do superdebounce bo za chwilę wyjdzie ci z tego takie SPAGHETTI - że sam się nie połapiesz o co chodzi.

    Krótko, Superdebounce wywoła twoją funkcję np:

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


    no toż po co w niej jakieś argumenty skoro wiesz, że ona ma zwiększać "coś tam" - nie ważne czy temperaturę czy co innego - masz jakąś gdzieś zmienną np: temperatura to w tej funkcji napiszesz sobie:

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


    chyba nie muszę mówić, że analogicznie możesz sobie zrobić funkcję:

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


    i w ogóle nie ingerujesz w kod SuperDebounce() .... a wszystko działa tak jak chcesz - i może na tym przykładzie zaskoczysz - do czego są callbacki.

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 paź 2018, o 09:22 
    Offline
    Użytkownik

    Dołączył(a): 14 lis 2017
    Posty: 129
    Pomógł: 0

    kalani napisał(a):
    Toteż piszę: zostawić superdebounce w spokoju i dane przekazywać do callbacka przez zm. globalne o zasiegu plikowym:




    Wiem o co biega tak jak piszesz będzie najprościej.

    ------------------------ [ Dodano po: 2 minutach ]

    mirekk36 napisał(a):

    i w ogóle nie ingerujesz w kod SuperDebounce() .... a wszystko działa tak jak chcesz - i może na tym przykładzie zaskoczysz - do czego są callbacki.



    Czaję, poszedłem nie tą drogą co trzeba.



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

    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