Strona 1 z 1

zabawa z pętlami ...

: 01 gru 2004 00:07
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

: 01 gru 2004 01:13
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.

: 01 gru 2004 06:23
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 :(

: 01 gru 2004 08:15
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:

: 01 gru 2004 12:04
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.

: 01 gru 2004 17:32
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 :)

: 01 gru 2004 19:17
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.

: 02 gru 2004 02:41
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

: 02 gru 2004 11:25
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Ĺ

: 02 gru 2004 14:00
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