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



Teraz jest 29 mar 2024, o 12:53


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 
Autor Wiadomość
PostNapisane: 17 cze 2018, o 16:50 
Offline
Nowy

Dołączył(a): 25 gru 2015
Posty: 13
Pomógł: 0

Cześć. Próbuje napisać program do obsługi 9 klawiszy (takie superdebounce) wykorzystujac zreszta ta funkcje. Problem mam z callbackami, niestety. Mianowicie potrzebuje aby kazdy klawisz obslugiwal callbacka z argumentem. to zrobilem i dziala. ale kazdy klawisz ma miec inny callback i inny argument wywolywany z tej samej funkcji...
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


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

Pytanie moje jest takie: Czy da się tak jak ja chce i jak to wykonać? Proszę o pomoc. Mirek tak fajnie to tłumaczył, ze podstawowe działanie rozumiem, niestety chciałbym moc podać rożne funkcje i parametry do wykonania przy rożnych klawiszach. Z góry dziękuję za wytłumaczenie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 cze 2018, o 10:00 
Offline
Nowy

Dołączył(a): 25 gru 2015
Posty: 13
Pomógł: 0

Tak, tak powinno byc. Tylko wtedy musi byc z tym parametrem. Ja bym chcial zmieniac parametr. Czt tak sie wogole da?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 cze 2018, o 23:28 
Offline
Nowy

Dołączył(a): 25 gru 2015
Posty: 13
Pomógł: 0

Jak zrobic zebym przypisal do wskaznika funkcj np KEY[0].WYSWIETL(INTFCE);
KEY[1].WYSWIETL(MUX);
a wywolanie funkcji : if(key->keyshort)key->keyshort;
Chodzi mi o wywolywanie podstawionej funkcji z parametrem. A nie wywolanie funkcji ze stalym paramertem. Da sie tak?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 cze 2018, o 00:02 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

jacabe napisał(a):
Chodzi mi o wywolywanie podstawionej funkcji z parametrem. A nie wywolanie funkcji ze stalym paramertem. Da sie tak?
Da się :)
Oglądałeś poradniki Mirka o callbackach? Wspomina tam o tym ...

--
Pozdrawiam,
Robert



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 cze 2018, o 06:01 
Offline
Nowy

Dołączył(a): 25 gru 2015
Posty: 13
Pomógł: 0

No i wlasnie jakos zatrybic nie umiem. Dlatego prosze o pomoc. Ogladam i probuje i mam bledyw kompilacji.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 cze 2018, o 07:44 
Offline
Nowy

Dołączył(a): 25 gru 2015
Posty: 13
Pomógł: 0

Jeszcze raz ogladalem poradniki. Wszedzie jest rejestracja callbacka bez parametrow a wywolanie z parametrem. Czy da sie zarejestrowac callbacka z parametrem : moje KEY[0].KEYSHORT = wyswietl(mux)? A wywolac if(callback) callback; niech sie wywola zarejestrowana funkcja z parametrem ktory wczesniej dolaczylem?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 cze 2018, o 10:13 
Offline
Użytkownik

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

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


Pole struktury o nazwie keyshort to wskaźnik na funkcję. Taki wskaźnik to wartość 16-bitowa będąca adresem pierwszej instrukcji funkcji. Nie da się do niego wpisać jeszcze dodatkowo jakiegoś argumentu. Jedyny sposób to:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
[/syntax]

Jeżeli chcesz zapamiętać argument, z którym funkcja ma się wykonać, możesz np. dodać dodatkowe pole do struktury, które będzie przechowywać wartość tego argumentu:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


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


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


Oczywiście istnieją zapewne inne możliwości osiągnięcia celu, być może lepsze, jednak z Twojego opisu nie potrafię wywnioskować, jaki ten cel dokładnie jest, więc trudno doradzić coś konkretnego.
Nie podałeś jednoznacznie np.:
Czy każdy klawisz ma inną funkcję callback, czy niektóre klawisze korzystają z tych samych funkcji, tylko z innym argumentem?
Czy argumenty to zmienne globalne, czy lokalne? Jeśli do funkcji chcesz przekazywać wskaźniki zmiennych globalnych, to być może wcale nie będziesz potrzebował callbacka z argumentem.

Nie mam w tej chwili czasu na dokładną analizę kodu, ale na pierwszy rzut oka mam wrażenie, że chyba niepotrzebnie przekombinowałeś...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 cze 2018, o 11:21 
Offline
Nowy

Dołączył(a): 25 gru 2015
Posty: 13
Pomógł: 0

:D Dziekuje andrews. O to mi chodzilo. Teraz bede w komplecie. Bede dzis testowal. Stawiam piwko



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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