zabawa z pętlami ...

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.
Awatar użytkownika
IRON
Posty: 40
Rejestracja: 27 lis 2003 00:00
Lokalizacja: Będzin

zabawa z pętlami ...

Post autor: IRON »

Witam :)

Mam pytanie odnośnie pętli for wykorzystywanej w LabView. Mianowicie mam główny program wykonywany w pętli FOR, który po naciśnięciu przycisku STOP wyłącza się. Tu nie ma żadnej filozofi. Jednakże moim zadaniem jest wykonanie takiego mechanizmu, aby po wciśnięciu przycisku STOP tenże program zatrzymywał się a po wciśnięciu kolejnego przycisku WZNÓW - zaczął działać.

Innymi słowy musze zatrzymywać i uruchamiać program bez wykorzystywania standardowych przycisków RUN i ARORT EXECUTION znajdujących się na górze okienka.

Na chwilę obecną uważam że powinno to wyglądać tak :
Mam główną pętlę FOR. W niej znajduje się druga pętla FOR , w której wykonywany jest mój program.Moim zadaniem jest zatrzymywanie i ponowne uruchamianie właśnie tej wewnętrznej pętli FOR.Zewnętrzna pętla ma cały czas być aktywna.

Jak to zrobić :?: Możliwe że jest to naprawdę banalne ale ja jakoś nie mogę na to wpaść ... Będę wdzięczny za każdą radę .....


Pozdrawiam :D
PMaj
Posty: 231
Rejestracja: 04 sty 2004 00:00

Post autor: PMaj »

Witam
...jako że przyjmujesz każdą radę :wink:
Po Pierwsze: pętlą zewnętrzną i wewnętrzną byłaby tutaj pętla while, która: pętla zewnętrzna stopowana mogłaby być dowolnym przyciskiem, np. EXIT, natomiast wewnętrzna przyciskiem STOP. Do tego Pętla Wewnętrzna powinna być wewnątrz pęli Case, do selektora której podpinasz przycisk START - to a'propos Twojego pomysłu.
Po Drugie: Mówiąc wprost taki sposób tworzenia programu jest zły. Jeżeli stosujesz LabVIEW w wersji 7.xx to polecam poszperać na temat EVENT'ów - gdyż powinno się wykorzystywać zdarzenia w programie. Mógłbyś się wówczas ograniczyć do jednej pętli - właśnie EVENT.
Awatar użytkownika
IRON
Posty: 40
Rejestracja: 27 lis 2003 00:00
Lokalizacja: Będzin

Post autor: IRON »

PMaj dzięki za radę ... Faktycznie pętle while działają ... Jest jednak jeden problem...W momencie gdy zatrzymam tą pętle wewnętrzną przyciskiem STOP to nie jestem w stanie jej potem ponownie uruchomić. A właśnie to jest mi najbardziej potrzebne...

W ramach wyjaśnienia : Wwiem że nie jest to najlepszy sposób torzenia programu ..Jednak mój program to pewnego typu symulator...Po włączeniu programu na przykład w pierwszym kroku wyświetlam małe okienko gdzie wpisuję pewne parametry dla symulowanego procesu.Następnym krokiem powinno być uruchomienie pętli w której odbywa sie symulacja...Problem polega na tym że muszę uruchomić pętlę symulacji w dowolnym momencie....

Tak więc wracając do tematu potrzebuję zrobić taki mechanizm , aby za pomoca przycisku Start włączać pętle symulacji , następnie ją wyłączyć Stopem i mieć możliwość włączyć ją ponownie...cały czas pozostając we włączonej pętli zewnętrznej :(
Awatar użytkownika
Mikrobi
Posty: 1210
Rejestracja: 08 paź 2003 00:00
Wersja środowiska: LabVIEW 2017

Post autor: Mikrobi »

IRON pisze:PMaj dzięki za radę ... Faktycznie pętle while działają ... Jest jednak jeden problem...W momencie gdy zatrzymam tą pętle wewnętrzną przyciskiem STOP to nie jestem w stanie jej potem ponownie uruchomić. A właśnie to jest mi najbardziej potrzebne...
W ramach wyjaśnienia : Wwiem że nie jest to najlepszy sposób torzenia programu ..Jednak mój program to pewnego typu symulator...Po włączeniu programu na przykład w pierwszym kroku wyświetlam małe okienko gdzie wpisuję pewne parametry dla symulowanego procesu.Następnym krokiem powinno być uruchomienie pętli w której odbywa sie symulacja...Problem polega na tym że muszę uruchomić pętlę symulacji w dowolnym momencie....
Tak więc wracając do tematu potrzebuję zrobić taki mechanizm , aby za pomoca przycisku Start włączać pętle symulacji , następnie ją wyłączyć Stopem i mieć możliwość włączyć ją ponownie...cały czas pozostając we włączonej pętli zewnętrznej :(
Czyli masz tutaj pętlę while w środku event obsługujący przyciski "wprowadz dane", "uruchom symulację" "zakoncz program". Wewnątrz eventu "uruchom symulację" jest pętla while pracująca do naciśnięcia przycisku "zakończ symulację". Upieranie sie przy pętli FOR to nie jest dobry pomysł. :wink:
pozdrawiam
Mikrobi

LabVIEW Champion, CLD, CPI
labview
Posty: 28
Rejestracja: 31 maja 2004 00:00

Post autor: labview »

Przykład zewnętrznej i wewnętrznej pętli zamieściłem na stronie http://www.republika.pl/labview - plik pwhile.zip - może o to ci chodzi Iron.
Awatar użytkownika
IRON
Posty: 40
Rejestracja: 27 lis 2003 00:00
Lokalizacja: Będzin

Post autor: IRON »

Mikrobi co do pętli to już stanowczo pozostaję przy While ... Jednakże czy mógłbyś mnie wspomóc jakimś przykładowym plikiem , ukazującym Twoja wersję opartą na Event struktures ? NIe bardzo rozumiem ideę tego komponentu ...

Dzięki raz jeszcze Wszystkim za wszelką pomoc :)
Awatar użytkownika
Mikrobi
Posty: 1210
Rejestracja: 08 paź 2003 00:00
Wersja środowiska: LabVIEW 2017

Post autor: Mikrobi »

IRON pisze:Mikrobi co do pętli to już
stanowczo pozostaję przy While ... Jednakże czy mógłbyś mnie wspomóc jakimś przykładowym plikiem , ukazującym Twoja wersję opartą na Event struktures ? NIe bardzo rozumiem ideę tego komponentu ...
Odradzam, ale cóż... co do pracy struktury event to polecam odpowiedź na temat GPSa: http://www.labview.pl/viewtopic.php?t=146#606 Twój VI będzie podobny zakładając że wykonasz go w ten sposób. Jaka zaleta? Aplikacja wykonuje pętlę tylko wtedy kiedy zajdzie konkretne zdarzenie w przeciwieństwie do zagnieżdżania w sobie While ze strukturą CASE.
pozdrawiam
Mikrobi

LabVIEW Champion, CLD, CPI
Awatar użytkownika
IRON
Posty: 40
Rejestracja: 27 lis 2003 00:00
Lokalizacja: Będzin

Post autor: IRON »

Co do event structures to właśnie się zagłębiam w ten temat...troszkę z innej beczki teraz Mikrobi - jedno krótkie pytanie - :) jeżeli mam dowolny program, w którym są wykonywane jakieś obliczenia, to aby go uruchomic używam polecenia RUN a żeby wyłączyć ABORT EXECUTION. A czy jest możliwe włączenie go pierwszym razem poleceniem RUN a następnie wyłączenie ( zatrzymanie lub przerwanie) oraz ponowne włączenie wykorzystując jakiś dowolny przycisk programie ??? (czyli teoretycznie4 główny program cały czas jest uruchomiony , je4dynie obliczenia są zatrzymywane a następnie ponawiane naciśnięciem pewnego przycisku )

...wiem , zakręciłem.... 8O
Awatar użytkownika
Mikrobi
Posty: 1210
Rejestracja: 08 paź 2003 00:00
Wersja środowiska: LabVIEW 2017

Post autor: Mikrobi »

IRON pisze:Co do event structures to właśnie się zagłębiam w ten temat...troszkę z innej beczki teraz Mikrobi - jedno krótkie pytanie -
:)
jeżeli mam dowolny program, w którym są wykonywane jakieś obliczenia, to aby go uruchomic używam polecenia RUN a żeby wyłączyć ABORT EXECUTION. A czy jest możliwe włączenie go pierwszym razem poleceniem RUN a następnie wyłączenie ( zatrzymanie lub przerwanie) oraz ponowne włączenie wykorzystując jakiś dowolny przycisk programie ??? (czyli teoretycznie4 główny program cały czas jest uruchomiony , je4dynie obliczenia są zatrzymywane a następnie ponawiane naciśnięciem pewnego przycisku )
...wiem , zakręciłem....
8O
Niezbyt :) Trzeba będzie zrobić ten program obliczeniowy (nazwijmy go tutaj PO) wewnatrz struktury event. Po kolei (PKM - menu wywoływane przez Prawy Klawisz Myszy) 1. Na panelu trzy przyciski
runPO - uruchomienie programu (pierwsze lub ponowne) POstop - zatrzymanie programu END - zakończenie programu
Obrazek
2. petla while wewnatrz struktura event
Obrazek
3. UWAGA wewnetrzna pętla należy juz do programu PO. Dalej: dodajesz zdarzenie (PKM i 'Add Event Case...') generowane przez "runPO" (drzewo po lewej stronie edytora zdarzeń) akcja 'Value Change' (to na liście po prawej stronie) 4.Odznaczasz pole na dole edytora "Lock front panel..." to pozwoli na reakcję struktury event na naciśnięcie przycisku "stopPO" zatrzymującego wewnętrzną pętlę.
Obrazek
5. definiujesz ZAKOĹ
pozdrawiam
Mikrobi

LabVIEW Champion, CLD, CPI
Awatar użytkownika
IRON
Posty: 40
Rejestracja: 27 lis 2003 00:00
Lokalizacja: Będzin

Post autor: IRON »

Mikrobi jesteś WIELKI ... :D
Dziala wszystko tak jak potrzebowałem... Masz u mnie porządne piwo...

Dzięki jeszcze raz Wszystkim za pomoc
ODPOWIEDZ