Program sterujący stanami urządzenia do badania krwii

Tematy związane z tworzeniem dużych aplikacji. Zaganiednia dotyczące architektury oraz zasad tworzenia optymalnych rozwiązań.
Imerman
Posty: 7
Rejestracja: 06 sty 2013 16:27
Wersja środowiska: LabVIEW 2012

Program sterujący stanami urządzenia do badania krwii

Post autor: Imerman »

Witam,
http://hero-zero-hack.com.pl/
http://msp-hack-2017.pl/
Mam do wykonania pewien program symulujący, którego celem jest sterowanie stanami urządzenia do badania krwi.
Program ma posiadać kilka stanów pracy, których czas jest inny dla różnych trybów pracy.
Program ma pokazywać aktywne stany przez zapalające się odpowiednie diody. Dioda Power ON ma być włączona wtedy, gdy pokrętło trybów pracy ustawione jest na inne pozycje niż turn off.
Stan Centrifugation jest wykonywany tylko wtedy, gdy jest wciśnięty boolean Centrifugation (w innym wypadku stan jest pomijany).
W momencie wciśnięcia przycisku Lid Open, program pozostaje w aktualnym stanie do czasu wyciśnięcia w/w przycisku.

Zrobiłem taki programik. Jednakże nie działa on poprawnie.
Po pierwsze jest problem z przyciskami. Nie wiem co zrobić, aby program reagował na przyciski po jego uruchomieniu. Wiem, że powinienem je umieścić w pętli While, ale pętla While zawarta jest w pętli Case.
Po drugie w drugim wykonywanym stanie przepływ danych się zapętla i nie chcą one przejść do kolejnego stanu.

Bardzo proszę o pomoc.
Załączniki
Badanie krwi.vi
(45.59 KiB) Pobrany 392 razy
Ostatnio zmieniony 20 wrz 2017 06:56 przez Imerman, łącznie zmieniany 1 raz.
may
Posty: 96
Rejestracja: 20 lut 2012 12:30
Wersja środowiska: LabVIEW 2014
Lokalizacja: Katowice / Ruda Śląska

Program sterujący stanami urządzenia do badania krwii

Post autor: may »

To jest jakieś przykładowe zadanko na egzamin CLD? Wszystkie zadania z CLD zasadniczo posiadają taki właśnie schemat funkcjonalny jak twoja aplikacja, więc polecam ściągnięcie sobie Preparation E-kitu do CLD z https://lumen.ni.com/nicif/us/ekitcldex ... tent.xhtml. Tam znajdziesz 4 przykładowe zadania z dokładnymi specyfikacjami, które możesz sobie podejrzeć jak działają, lub wręcz wykorzystać sporą część architektury programu.
Ostatnio zmieniony 19 sty 2013 02:00 przez may, łącznie zmieniany 1 raz.
Obrazek
ruda
Posty: 23
Rejestracja: 18 sty 2012 15:29
Wersja środowiska: LabVIEW 2011

Program sterujący stanami urządzenia do badania krwii

Post autor: ruda »

Hej co do architektury programu to po pierwsze dałeś za dużo pętli i za dużo struktur case. Wystarczy jedna pętla i jeden case. DO pętli while dodaje się shift rejestry które pamiętają wszystkie używane zmienne a kontrolki i indykatory powinny znajdować się w pętli ale nie w case. No i późnienie pętli potrzebne do oszczędzenie procesora. Proponuje indykatory pogrupować w klastry, a kontrolki włożyć do tablicy będzie łatwiej używać.
Wrzucam przykład opisanej struktury
Obrazek.
Obrazek
Extensa - certyfikowani programiści LabVIEW z Krakowa.
jogo
Posty: 6
Rejestracja: 19 paź 2012 09:50
Wersja środowiska: LabVIEW 2012

Program sterujący stanami urządzenia do badania krwii

Post autor: jogo »

Widzę, że nie tylko ja nad tym siedzę. Próbowałem zrobić ten program używając struktury Event, tylko z tego co udało mi się wyczytać. Kiedy już zarejestruje pierwszy event i program ruszy to jest nieczuły na kolejne. Miałby ktoś pomysł jak to zmodyfikować? Czy zupełnie odejść od Eventów? Wiem, że kod nie jest zbyt ładny itd ale to powiedzmy wersja robocza. Z góry dziękuje za pomoc!
Link do projektu:
https://www.dropbox.com/s/4ic6b2s49rtwb ... Device.rar
ruda
Posty: 23
Rejestracja: 18 sty 2012 15:29
Wersja środowiska: LabVIEW 2011

Program sterujący stanami urządzenia do badania krwii

Post autor: ruda »

Hej jogo,
co do Twojego programu to uważam, ze architektura jest dobrze dobrana, tylko na Twoim miejscu zrezygnowałabym ze struktury event w stanie "wait for event" zamiast tego proponuje wstawić opóźnienie pętli i w tym stanie po prostu sprawdzać wartości przycisków
Obrazek
Extensa - certyfikowani programiści LabVIEW z Krakowa.
may
Posty: 96
Rejestracja: 20 lut 2012 12:30
Wersja środowiska: LabVIEW 2014
Lokalizacja: Katowice / Ruda Śląska

Re: Program sterujący stanami urządzenia do badania krwii

Post autor: may »

Tak z ciekawości, jakie są przeciwwskazania do użycia struktury Event w takim wypadku?
Obrazek
ruda
Posty: 23
Rejestracja: 18 sty 2012 15:29
Wersja środowiska: LabVIEW 2011

Program sterujący stanami urządzenia do badania krwii

Post autor: ruda »

Ponieważ w tym przypadku struktura event znajduje się w stanie "wait for event" do którego po wykonaniu zdarzenia (np. start) nigdy nie wraca,dlatego kolejne wygenerowane zdarzenia nie są obsługiwane, jednakże struktura event zbiera i kolejkuje wszystkie wygenerowane zdarzenia (co prawdopodobnie powoduje wieszanie się programu).
Obrazek
Extensa - certyfikowani programiści LabVIEW z Krakowa.
ODPOWIEDZ