Event structure i przycisk "Switch until released"

Jeśli masz coś do powiedzenia w sprawie LabVIEW napisz. Tutaj są tematy, których nie można uściślić do innych działów.
Rubid
Posty: 7
Rejestracja: 30 paź 2010 12:40
Wersja środowiska: LabVIEW 2010

Event structure i przycisk "Switch until released"

Post autor: Rubid »

Witam,
mam dość nietypowy problem, spędziłem już mnóstwo czasu nad nim a rozwiązania nie mam do tej pory.
Może najprościej będzie opisać to przykładem.

Mam sześć przycisków których mechanical action ustawiony jest na "switch until released". Mam również sześć liczników iteracji pętli (zwykłe indykatory podpięte do w nieskończonej pętli while). Chcę, aby indykator 1 działał tylko jak będę trzymał wciśnięty przycisk 1. Indykator 2 jak trzymam przycisk 2, itd.
Chcę rozwiązać ten problem wykorzystując event structure. Problem w tym że dodając odpowiedni event, z "value change" dla odpowiedniego przycisku nie mogę później zakończyć tego eventa - po puszczeniu klawisza myszy przycisk się wyciska (czyli de facto zmienia swoją wartość) ale licznik dalej się zwiększa...

Jak sobie poradzić z tym problemem?

W załączniku plik.
Załączniki
labview.jpg
Awatar użytkownika
Harnas
Posty: 152
Rejestracja: 16 mar 2011 09:56
Wersja środowiska: LabVIEW 2009

Event structure i przycisk "Switch until released"

Post autor: Harnas »

Sprobowalem u siebie to zbudowac. U mnie po wejsciu w petle while, juz jej nie opuszcza. Sprobuj obslugiwac stop petli while, bo inaczej jej nie opuszcza nawet po puszczeniu przycisku.
may
Posty: 96
Rejestracja: 20 lut 2012 12:30
Wersja środowiska: LabVIEW 2014
Lokalizacja: Katowice / Ruda Śląska

Re: Event structure i przycisk "Switch until released"

Post autor: may »

Nie jestem absolutnie przekonany, czy właśnie o to Ci chodzi i jak bardzo zależy Ci na użyciu event structure, ale możliwe jest dużo prostsze rozwiązanie wykorzystujące wyłącznie shift register'y i case'y. Działa to, o ile Cię dobrze zrozumiałem, tak jak chcesz, czyli dany "licznik" (indykator) zlicza przejścia pętli, tylko jeżeli jest wciśnięty odpowiadający mu przycisk. Mechanical action przycisków ustawione jest na "switch until released ", w przypadku wartości false w case'ach kabel jest tylko przeciągnięty.


//EDIT//



Możesz też zrobić to dokładnie tak jak na twoim przykładzie, jedyne co musisz zrobić to na event structure kliknąć prawym, wybrać "Edit events handled by this case" i odznaczyć ptaszka na dole mówiącego "lock front panel (...)". Nie jest to jednak "ładne" rozwiązanie, a w szczególności należy unikać event struktur rozrzuconych chaotycznie po całym programie.
Załączniki
Liczniki.png
Ostatnio zmieniony 07 mar 2012 19:18 przez may, łącznie zmieniany 2 razy.
Obrazek
Awatar użytkownika
Pitol
Moderator
Posty: 984
Rejestracja: 19 lip 2007 00:00
Wersja środowiska: LabVIEW 2019
Lokalizacja: Kraków

Event structure i przycisk "Switch until released"

Post autor: Pitol »

Kolego Rubid... Wszelkie próby pomocy będą bezsensowne, dopóki nie wyjaśnisz konkretnie co chcesz uzyskać. W jakim celu liczysz iteracje? W pętli nie masz żadnego ograniczenia czasowego, co oznacza, że pętla kręci się z maksymalną prędkością, zależną od ilości procesów przetwarzanych przez Twój system operacyjny. Wyniki te nie mają kompletnie sensu, gdyż wystarczy np. otworzyć Mój Komputer żeby zakłócić pomiary.
Zatem wyjaśnij nam proszę konkretnie co chcesz osiągnąć, a wtedy nasza pomoc będzie bardziej precyzyjna i zdecydowanie lepsza.
ObrazekObrazekObrazek
Chcesz taki podpis? Zajrzyj tutaj
Rubid
Posty: 7
Rejestracja: 30 paź 2010 12:40
Wersja środowiska: LabVIEW 2010

Re: Event structure i przycisk "Switch until released"

Post autor: Rubid »

Witajcie,
dzięki za zainteresowanie tematem - dopiero teraz wróciłem do domu, więc spieszę z odpowiedzią.

Harnas,
to właśnie jest mój problem :(

may,
masz absolutną rację, jednak Twoje rozwiązanie ma jedną podstawową wadę - jeśli będziesz miał 20 przycisków to strach pomyśleć jak będzie wyglądał kod. Ja mam narazie sześć, jednak nie mam pewności czy niedługo nie będę musiał dorobić jeszcze sześć... Dlatego zależy mi na eventach - łatwiej to obsłużyć i uporządkować.

Pitol,
masz rację - starałem się jednak jak najmniej skomplikować temat. Mój program ma wysyłać sygnały o określonych parametrach (np. częstotliwości) po naciśnięciu odpowiedniego przycisku. Oczywiście że można to zrobić łatwiej, jednak żeby się czegoś nauczyć to nie można nisko stawiać sobie poprzeczki...

EDIT:
A przesłany przeze mnie screen to oczywiście zrobiony na szybko program - chodziło o zarysowanie tematu.
Ostatnio zmieniony 07 mar 2012 21:17 przez Rubid, łącznie zmieniany 1 raz.
may
Posty: 96
Rejestracja: 20 lut 2012 12:30
Wersja środowiska: LabVIEW 2014
Lokalizacja: Katowice / Ruda Śląska

Re: Event structure i przycisk "Switch until released"

Post autor: may »

Rubid, nie wiem czy twój problem został już rozwiązany, ale tak w ramach ćwiczeń napisałem sobie szablon aplikacji reagującej na naciśnięcia i puszczenia przycisków, opartej o zdarzenia i schemat producent-konsument. Wydaje mi się, że program napisany jest w miarę poprawnie i "ładnie". Kod nie będzie rozrastał się przy dodawaniu nowych przycisków, a wszystkie zdarzenia obsługi interfejsu użytkownika są zebrane w jednym miejscu. Indykatory w dolnej pętli mają za zadanie pokazać tylko, że pętla cały czas się kręci i możemy wrzucać tam subVije ze swoimi funkcjami odpowiednimi dla każdego przycisku.
Załączniki
Buttons_events.zip
(23.29 KiB) Pobrany 285 razy
Buttons_events.png
Obrazek
ODPOWIEDZ