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



Teraz jest 14 lis 2024, o 22:45


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 12 ] 
Autor Wiadomość
PostNapisane: 14 lip 2015, o 18:40 
Offline
Użytkownik

Dołączył(a): 08 mar 2014
Posty: 390
Lokalizacja: Głogów
Pomógł: 11

Witam, Próbuje zrobić obsługę pilota podczerwieni RC5 korzystając z gotowej biblioteki z GB. Zależy mi na tym aby w zależności od tego czy przycisk w pilocie trzymam krótko czy długo wykonywało tylko jedna funkcje. Aktualnie jest tak że jak trzymam krótko wciśnięty przycisk w pilocie to wykonuje się tylko funkcja przycisk_menu_krotki, ale jeśli trzymam dłużej to wykonują się obie funkcje i przycisk_menu_krotki i przycisk_menu_długi. Może ma ktoś jakiś pomysł jak zrobić aby wywoływać tylko tą jedną funkcje przycisk_menu_długi (bez funkcji przycisk_menu_krotki) gdy dłużej trzymam przycisk w pilocie?

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: 15 lip 2015, o 17:54 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 lut 2013
Posty: 158
Lokalizacja: KTT
Pomógł: 1

Kolego nie wiem czy dobrze rozumuję, ale na podstawie tego co wkleiłeś to ja bym kombinował z warunkami w if-ach, albo bym wykorzystał jakoś bit Toggle z ramki RC5.
może troche mieszam ale np:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
Gordon



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 lip 2015, o 18:25 
Offline
Moderator
Avatar użytkownika

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

nie nie idea jest trochę inna ... ale teraz muszę lecieć - później odpowiem

_________________
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: 15 lip 2015, o 19:32 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 lut 2013
Posty: 158
Lokalizacja: KTT
Pomógł: 1

No tak, poprzednio się pomyliłem. Później to muszę sprawdzić, ale z tego co kojarzę to zmienna key_time jest zerowana za każdym razem po obsłużeniu zdarzenia IR (czyt. po zwolnieniu klawisza pilota). I tu jest problem, bo przy kolejnym wciśnięciu klawisza pilota warunek w pierwszym if-ie jest zawsze spełniony (czy wciskamy klawisz na krótko czy na długo). Dlatego działanie jest takie jak opisałeś na początku.
Kiedyś z tym walczyłem... jak znajdę to wkleję rozwiązanie, ale może lepiej niech to Mirek wyjaśni:)

_________________
Gordon



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 lip 2015, o 19:50 
Offline
Użytkownik

Dołączył(a): 08 mar 2014
Posty: 390
Lokalizacja: Głogów
Pomógł: 11

No dokładnie próbowałem z takimi ifami ale efekt ten sam. Próbowałem też na różne sposoby sprawdzać kiedy przycisk pilota puszczony to ustawiam flagę puszczenia a jeśli wciśnięty to zwiększam wartość drugiej zmiennej i w pętli głównej sprawdzam ta flage puszczenia przycisku i jeśli puszczony to w zależności od wartości tej drugiej zmiennej wywoływałem jedna albo druga funkcje. Niestety nie działało wiec kod już usunięty



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 lip 2015, o 20:09 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 lut 2013
Posty: 158
Lokalizacja: KTT
Pomógł: 1

Póki co działam po omacku... może mieszam ale przychodzi mi jeszcze taka myśl. Może po prostu dać if-a... z else. Wtedy zawsze wykona się jedna funkcja, albo po if, albo po else. Coś w tym stylu:

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

_________________
Gordon



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 lip 2015, o 20:22 
Offline
Użytkownik

Dołączył(a): 08 mar 2014
Posty: 390
Lokalizacja: Głogów
Pomógł: 11

Wtedy program zachowuje się tak że cały czas jak wciskam przycisk to ciągle wykonuje się pierwsza a po chwili też ta drugą funkcja razem z pierwszą i tak cały czas potem dwie jednocześnie się wykonują.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 lip 2015, o 20:34 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

Ja bym jednak odpalał dalszą część kodu i poczekał na :

mirekk36 napisał(a):
nie nie idea jest trochę inna ... ale teraz muszę lecieć - później odpowiem

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 lip 2015, o 20:45 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 31 mar 2015
Posty: 310
Pomógł: 18

Jeżeli jest akcja, to akcja i długi czas powoduje ? reakcja 2 : reakcja 1
albo reakcja 1.
Teraz trzeba to ubrać w ify i co powie Mirek na mój post 101.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 lip 2015, o 20:46 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 lut 2013
Posty: 158
Lokalizacja: KTT
Pomógł: 1

W takim razie problem nie leży w samej funkcji moja_obsluga_ir() ale pewnie w jej umiejscowieniu w programie. Tak jakby wykonywała się kilka razy podczas trzymania przycisku na pilocie...

Zobaczymy co powie Mirek, on najlepiej to wszystko wyjaśni.

_________________
Gordon



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 lip 2015, o 22:01 
Offline
Moderator
Avatar użytkownika

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

Panowie - pisząc o reakcji na dłuższe wciśnięcie klawisza nigdy nie miałem na myśli, że przy krótkim nie wykona się akcja.

Pomimo to, ten długi KLIK, można tego typu możliwość zastosować na wiele różnorakich sposobów, wszystko kwestia pomysłów i wyobraźni - potrzeb

przykładowo klawisze cyfrowe - załóżmy że od krótkiego kliku umożliwiają wpisywanie np jakichś cyfr gdy oczywiście układ jest w odpowiednim trybie - np edycji godziny, bo jak jest poza tym trybem to kody cyferek są ignorowane. No ale za to w tym czasie mogą one działać na nieco dłuższy klik i pełnić całkiem inne funkcje.

inny przykład - załóżmy - że mamy klawisze VOL_UP i VOL_DOWN, no i gdy trzymamy wciśnięty klawisz to zanim np rozjaśnimy diody LED czy żarówkę to musi minąć troszkę czasu zanim suwak przesunie się do końca bo np inkrementujemy jakąś zmienną o JEDEN. A my przewidujemy że klient będzie niecierpliwy i jeśli trzyma klawisz np VOL_UP dostatecznie długo - to NAGLE BACH! od razu suwak dojeżdża do końca. Podobnie przy VOL_DOWN - nieco dłuższe przytrzymanie klawisza nagle zrobi nam MUTE !

;) no nie będę więcej wymyślał - bo chyba te przykłady już pozwalają dostrzec duże możliwości

Wszystko zależy jak projektujecie UI swojego urządzenia ;)

------------------------ [ Dodano po: 1 minucie ]

po co się upierać że jak ma zadziałać długi klik to krótki nie może ? - jeszcze raz powtórzę - wyżej opisałem dwie diametralnie różne sytuacje gdzie można wykorzystać i jedno i drugie rozwiązanie równocześnie ;)

_________________
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: 16 lip 2015, o 11:10 
Offline
Użytkownik

Dołączył(a): 08 mar 2014
Posty: 390
Lokalizacja: Głogów
Pomógł: 11

Potrzebuje te dwie funkcje zastosować do ustawiania trybów menu. Z tego co zrozumiałem to najprościej będzie dodać jeszcze jeden przycisk w pilocie który będzie wywoływał tą drugą funkcje i nie bawic się w sprawdzanie długości wciśnięcia przycisku. Dziękuje wszystkim za podpowiedzi:)



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

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