Maszyna stanu - Event Structure

Tematy związane z tworzeniem dużych aplikacji. Zaganiednia dotyczące architektury oraz zasad tworzenia optymalnych rozwiązań.
de80
Posty: 90
Rejestracja: 02 sty 2011 22:46
Wersja środowiska: LabVIEW 2014
Lokalizacja: KRK

Maszyna stanu - Event Structure

Post autor: de80 »

Witam,
mam pewien problem, z którym nie jestem sobie w stanie poradzić.

Jest zaimplementowana maszyna stanów , 3xbuttony i 2xEvent Structure ustawiona na Button->MouseDown dla wszystkich. Aplikacja zmienia texty na przyciskach w zależności od tego w jakim stanie jest maszyna oraz wykonuje różne akcje. Akcje są wykonywane w Event Structure'ach. Znajdują się one w różnych stanach maszyny aby naciśnięcie przycisku tego samego przycisku wykonywało inne zadania.
Problem polega na tym iż jak przechwytywana jest akcja z jednego Event Strucure'a po naciśnięciu przycisku, następnie w wyniku niezależnego czynnika zmienia się stan maszyny i automatycznie wyzwalany jest drugi Event, mimo iż nie został naciśnięty przycisk, nad którym "czuwa" drugi Event...

Dzięki za pomoc. Mam nadzieję, że napisałem w miarę konkretnie.

Pozdrawiam
Obrazek
Jamal79
Posty: 289
Rejestracja: 01 maja 2012 14:14
Wersja środowiska: LabVIEW 2012
Lokalizacja: Farum

Maszyna stanu - Event Structure

Post autor: Jamal79 »

Wyglada to na "mechaniczne akcje buttona" switch/latch, sprobuj wstawic jakies opuznienie. Bez kodu ciezko ocenic...
PiDi
Posty: 641
Rejestracja: 31 gru 2010 01:36
Wersja środowiska: LabVIEW 2017
Lokalizacja: Katowice

Re: Maszyna stanu - Event Structure

Post autor: PiDi »

Nigdy nie należy tak robić - jeden event structure musi wystarczyć (i wystarcza, trzeba tylko dobrze zaprojektować maszynę stanów). A to dlatego, że event structure działają tak, że czekają na zdarzenia niezależnie od tego, co się w kodzie dzieje - czyli obie twoje struktury czekają na to samo zdarzenie. Jeśli ono nastąpi, to obie struktury czekają na możliwość jego zrealizowania - czyli dojście do nich dataflow.

Akurat wczoraj prawie identyczny problem był na forum NI, tylko w drugą stronę: http://forums.ni.com/t5/LabVIEW/subvi-s ... -p/1990569 - tam z kolei druga struktura event powodowała zawieszenie front panelu.
ObrazekObrazekObrazekObrazek
de80
Posty: 90
Rejestracja: 02 sty 2011 22:46
Wersja środowiska: LabVIEW 2014
Lokalizacja: KRK

Maszyna stanu - Event Structure

Post autor: de80 »

Mechaniczna akcja raczej tego nie powoduje, bo już sprawdzałem. Skłaniam się do zdania PiDi'ego i tak mi się wydawało:) ale to było bardzo późno w nocy:) Dzieki!

Pozdrawiam
Obrazek
ODPOWIEDZ