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



Teraz jest 1 gru 2024, o 01:49


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 
Autor Wiadomość
 Tytuł: SuperDebouce
PostNapisane: 13 sie 2012, o 15:01 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 25 maja 2012
Posty: 296
Lokalizacja: Chebzie Dolne
Zbananowany użytkownik

Pomógł: 6

Witam!
Używam funkcji SuperDebounce z Mirka książki i pojawił się mi problem. Generalnie napisze najpierw
do czego to wykorzystuję. Steruję kamerą za pomocą RS232. Kamera ta przyjmuje określone komendy, które np sterują zoomem, autofocusem itp. Komendy wysyła funkcją uart_putc(0x81) itp. Chciałem np sterować zoomem za pomocą przycisku, jeden + drugi przycisk - i tak z kilkoma funkcjami. Wyszło na to że używam 8 przycisków. Teraz jest taka rzecz.
Kiedy wydam rozkaz np zoom+ to kamera zoomuje do maxa i dla tego potrzebna jest funkcja stop, która jest w nocie pdf kamery nazwałem ją void stop(void). I teraz jak napisać funkcję SuperDebounce żeby ująć funkcję np zoom i stop.

Robię coś takiego: (pisze teraz z pamięci bo nie mam kody na tym pc)
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 bardzo skrótowo napisałem z pamięci.
Teraz jak tutaj zaimplementować funkcję stop, która by zatrzymywała funkcję tele_zoom na czas, po tym jak puszczę przycisk? Zoom ma sie tylko wykonywać jak trzymam wciśnięty przycisk.

_________________
Inspekcja TV kanalizacji
Programowanie



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sie 2012, o 15:10 
Offline
Moderator
Avatar użytkownika

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

Przede wszystkim to zajrzyj do kolejnej lekcji (Projekt wielozadaniowy) na płycie DVD tam masz lekko poprawioną tą funkcję, ponieważ trzeba było do niej dodać dodakowy parametr na początku - zobacz tam co i jak

A użycie samej funkcji ??? no przecież hmmm jest dość dobrze opisane w książce - może napisz czego nie rozumiesz - zamiast pytania jak użyć ?

Przecież masz w nie reakcję pięknie albo na wciśnięcie klawisza albo funkcję auto-repeat. Ta druga może przydać ci się do zoomowania bo rozumiem że jak się wciśnie klawisz dłużej to ma się robić zooom czyli trzeba powtarzać wysyłanie jakiejś komendy do kamery

No a do klawisza sto przyda ci się tylko dodać funkcję własną do pojedynczego wciśnięcia czyli zatrzymania STOP

albo kompletnie nie wiem o co chodzi ? ;)

bo co ty za program napisałeś ? piszesz że chodzi ci o dwa klawisze a podajesz przykład z jednym .....

_________________
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: 13 sie 2012, o 16:06 
Offline
Moderator
Avatar użytkownika

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

GwynBleidD napisał(a):
mirku, z tego co zrozumiałem kamera przyjmuje 2 komendy (które nas interesują) zoom+ i stop. Podanie zoom+ powoduje zoom na max lub do podania komendy stop. Kolega chciałby, żeby komenda zoom+ była wysłana przy naciśnięciu przycisku, a stop przy jego puszczeniu. Tak przynajmniej ja to zrozumiałem, bo ma to wtedy sens ;)


No to nie za bardzo SuperDebounce w takiej postaci - trzeba byłoby sobie trochę to przerobić .... toż Funkcja ta nie była podana jako gotowa super biblioteka na każdy przypadek ;) a jedynie jako przykład jak można podchodzić do oprogramowania sobie klawiszy ....

więc można zrealizować wszystko - tylko trzeba to już dalej zrobić we własnym zakresie - na 100% nigdzie się gotowca na takie nietypowe potrzeby nie znajdzie przecież ... i nie o to chodzi chyba ? prawda

warto więc przestudiować działanie SuperDebounce i zrozumieć zasadę działania - bo na tej podstawie już będzie można pisać sobie co się żywnie spodoba ;)

_________________
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: 13 sie 2012, o 18:19 
Offline
Moderator
Avatar użytkownika

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

Rozumiem to doskonale - jednak jako że źle na początku zrozumiałem to starałem się podpowiedzieć jak mogłem ;)

Za to na stworzenie RYBY na razie nie mam czasu :( .... może znajdzie się inna osoba ... zobaczymy

_________________
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: 13 sie 2012, o 18:37 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 25 maja 2012
Posty: 296
Lokalizacja: Chebzie Dolne
Zbananowany użytkownik

Pomógł: 6

GwynBleidD zrozumiałeś mnie doskonale, dokładnie o to mi chodziło:). Cóż pokombinuje jutro z tą funkcją. Dzięki za zainteresowanie:)
Robiłem przyciski na timerach programowych. Lecz kiedy wysyłałem komendę to zoom nie szedł płynnie tylko tak zacinało - czy to może od programowych przerwań?
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
Inspekcja TV kanalizacji
Programowanie



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sie 2012, o 18:53 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Jak klawisz masz wciśnięty to wysyłasz cyklicznie rozkaz i zajmujesz procesor i kamerę. Musisz wysłać komendę tylko raz w reakcji na zbocza. Np.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sie 2012, o 21:53 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8587
Pomógł: 337

Może nie wiele pomogę , ale z lenistwa nie używam żadnych funkcji debounce/superdebounce i megadebounce wszystko załatwia mały scalaczek:

MAX6816 -- dla 1 klawisza
MAX6817 -- dla 2ch
MAX6818 -- dla 8

_________________
Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 sie 2012, o 06:12 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 25 maja 2012
Posty: 296
Lokalizacja: Chebzie Dolne
Zbananowany użytkownik

Pomógł: 6

Fajniutki ten układzik. Nie wiedziałem o czymś takim nawet:)

_________________
Inspekcja TV kanalizacji
Programowanie



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 1 gość


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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO