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



Teraz jest 15 lis 2024, o 10:26


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 32 ]  Przejdź na stronę Poprzednia strona  1, 2
Autor Wiadomość
PostNapisane: 1 maja 2017, o 14:34 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 lut 2017
Posty: 368
Lokalizacja: Gliwice
Pomógł: 34

quartus napisał(a):
Do rozważenia:
1. Jest register. Czy jest (powinien być) unregister?

Wszystko pewnie zależy od aplikacji. W obsłudze zdarzenia jest warunek:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Jeśli wskaźnik do funkcji jest różny od zera to funkcja się wykona, w przeciwnym wypadku się nie wykona.
Można by to wykorzystać do "wyrejestrowania" funkcji, ale nie mam pewności czy tu nie ma jakichś zagrożeń..
Czy to byłoby potrzebne? Ciężko powiedzieć :)

quartus napisał(a):
2. Ile razy zamierzasz rejestrować/wyrejestrowywać zdarzenie dla enkodera?

Domyślnie, jak w przykładzie, rejestracja nastąpiła przed funkcją main, więc w tym przypadku raz.
Nie widzę natomiast problemu w zdefiniowaniu kilku funkcji reagujących na enkoder i w zależności od kontekstu rejestrowanie tej właściwej.
Do tego pewnie należałoby znowu skorzystać z mechanizmu zdarzeń, który by właściwe funkcje rejestrował lub wyrejestrowywał.

quartus napisał(a):
3. Czy tylko 1 rodzaj zdarzenia? Np. inc/dec o "1 działkę" czy może także przeskok w jednostce czasu o kilka działek?

Tutaj już można pewnie ostro zamieszać jeśli będzie potrzeba.

quartus napisał(a):
4. Czy do funkcji callback nie powinien trafiać argument? Np. inc/dec, może wartość licznika?

Można tak zrobić, ale w tym wypadku nie był potrzebny, bo funkcja bazuje na funkcji enc_get().

Jak pisałem, póki co, zdarzenia i callbacki są dla mnie tajemnicą więc ciężko powiedzieć czy trafiłem z odpowiedziami :)
Mam nadzieje, że jakiś bardziej obeznany programista uściśli moje wypowiedzi.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 maja 2017, o 20:24 
Offline
Moderator
Avatar użytkownika

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

Zealota napisał(a):
Jeśli wskaźnik do funkcji jest różny od zera to funkcja się wykona, w przeciwnym wypadku się nie wykona.
Można by to wykorzystać do "wyrejestrowania" funkcji, ale nie mam pewności czy tu nie ma jakichś zagrożeń..

Tak sobie myślę, może się mylę, ale myślę ... ;) ... że wyrejestrowanie nie miałoby tu hmmm jakby sensu - dlaczego?

no bo skoro zero to właśnie callback jest wyrejestrowany - nie ma innej możliwości - tak tylko podpowiadam może to pozwoli nieco poszerzyć obraz tych callbacków

Warunek jest po to, że nawet jeśli ktoś użyje tej funkcji nazywanej zdarzeniem w pętli while, a nieopatrznie np przez zapomnienie nie zarejestruje callbacka - to właśnie ma się to zachować bezpiecznie czyli nic ma się nie wykonać. A jak już zarejestruje to funkcja prawidłowo się wykona

------------------------ [ Dodano po: 5 minutach ]

Zealota napisał(a):
Nie widzę natomiast problemu w zdefiniowaniu kilku funkcji reagujących na enkoder i w zależności od kontekstu rejestrowanie tej właściwej.
Do tego pewnie należałoby znowu skorzystać z mechanizmu zdarzeń, który by właściwe funkcje rejestrował lub wyrejestrowywał.


Dokładnie to jest fajną zaletą callbacków, że można rejestrować różne funkcje w różnych miejscach programu. To nie tylko ma sens ale jest wręcz chyba najbardziej miodną możliwością :) że aż tak to określę.

Ale czy myśleć o mechanizmie to rejestracji/wyrejestrowania ? hmmm oczywiście może czegoś nie rozumiem w tym stwierdzeniu - ale prosta funkcja rejestracji wystarcza w zupełności.

Zwykle pierwszy raz rejestrujesz przed pętlą główną w main ... prawda?

Później skoczysz np do jakiegoś MENU - tam pewnie też będzie jakaś pętla główna, wystarczy zarejestrować nowego callbacka (nie trzeba nic wyrejestrowywać przecież bo podmieniasz wskaźnik na nowy i już)

Po wyjściu z pętli funkcji MENU rejestrujesz to co było wcześniej ...

a jeśli masz jeszcze więcej, dużo więcej takich sytuacji w sofcie i trzeba często rejestrować callbacka i przywracać różne poprzednie jego wartości to warto wtedy np pomyśleć o tablicy wskaźników do funkcji callbackowych, zapamiętywać je przed zmianą - zaś po wyjściu z jakiejś pętli przywracać poprzednio zapamiętaną

no możliwości jest sporo

_________________
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  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 32 ]  Przejdź na stronę Poprzednia strona  1, 2

Strefa czasowa: UTC + 1


Kto przegląda forum

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