Strona 1 z 1

Zmienna lokalna do zatrzymywania kilku pętli

: 13 sie 2012 09:54
autor: 1125
Witam,

Chciałem zrobić program z dwiema (docelowo trzema) pętlami while. Ale chcę aby program był zatrzymywany z jednego przycisku "Stop", wszystko po to by nie mieć na front panelu kilku przycisków stop. Chciałem w tym celu wykorzystać zmienną lokalną ale mi nie wychodzi. Zamieszczam prosty kod obrazujący mój błąd który się wyświetla.

Pozdr
1125

Zmienna lokalna

: 13 sie 2012 10:14
autor: Jamal79
Najprosciej to tak...
Wiekszosc sie za glowy zlapie :)

Re: Zmienna lokalna

: 13 sie 2012 10:18
autor: TuChoLa
Jak klikniesz start to wyświetli Ci się error list, którym masz napisane co jest grane i jest wyjaśnione dlaczego tak się dzieje. W skrócie domyślne "Mechanical Action" dla przycisku Stop to Latch, którego zmienna lokalna nie obsługuje. Tylko przy zmianie akcji na jakąś ze switch program ją zapamięta przy następnym uruchomieniu i program od razu się zatrzyma, by tego uniknąć trzeba by wstawić poza pętlami while element zmieniający wartość przycisku Stop na False.

Jamal79 pisze:Najprosciej to tak...
Wiekszosc sie za glowy zlapie :)
Jak przycisk będzie poza pętlami while to się nie wykona, jego wartość zostanie raz pobrana do pętli przy starce programu, a przycisk ten będzie już nie użyteczny.

Zmienna lokalna

: 13 sie 2012 10:24
autor: 1125
No tak ładnie i prosto wygląda ale sprawdziłeś czy to zadziała? Po uruchomieniu pętli nie ma możliwości jej zatrzymania ponieważ zatrzymanie musi być wywołane wewnątrz pętli. Efekt tego co posłałeś jest taki że pętle się uruchomią a klikając "stop" nie ma reakcji.


W takim razie czy jest możliwość zatrzymania dwóch pętli z jednego przycisku? Myślałem że za pomocą zmiennej lokalnej to zrobię bo widziałem w przykładach że niektórzy obsługują zmienne boolowskie poprzez zmienne lokalne.

Zmienna lokalna

: 13 sie 2012 10:28
autor: Jamal79
sorry nie ten snagit wrzucilem....

przerobilem go na 4 loopy

Zmienna lokalna

: 13 sie 2012 10:31
autor: Jamal79
wrrr, tak to jest jak czlowiek sie spieszy.
W tym musisz zmienic wlasnosci fizyczne "buttona" celowo wybralem diode bo zwyczajny/standartowy stop nie dziala. Ma inna funkcje jak zwykle przyciski...

Re: Zmienna lokalna

: 13 sie 2012 10:41
autor: TuChoLa
Wydaje mi się, że takie rozwiązanie będzie łatwiejsze i szybsze. Dla stopa jest ustwione "Switch when pressed". Program jest zrobiony na podstawie opisu, który wykonałem wcześniej. Mechanical Action można zmieniać tylko na front panel po kliknięciu prawym przyciskiem myszy na przycisk stop.

Zmienna lokalna

: 13 sie 2012 10:57
autor: 1125
Dziękuję wam za szybkie odpowiedzi, mój program który posłałem jako pierwszy zadziałał po zmianie na "Switch when pressed" trzeba przytrzymać stop tak długo jak długo trwa pętla i wszystko się zatrzymuje. Nie jest potrzebna struktura sekwencji.

Pozdrawiam
1125

Re: Zmienna lokalna

: 13 sie 2012 11:38
autor: TuChoLa
Akurat strukturę sekwencji w takich przypadkach stosuję dosyć często, ponieważ nadaje to dodatkowy ład w kodzie (według mnie) oraz w niczym nie przeszkadza. Warto wstawić w program to co wstawiłem w pierwszej sekwencji, ponieważ dzięki temu nie trzeba pamiętać, by cofnąć przycisk Stop.

Zmienna lokalna

: 13 sie 2012 12:37
autor: 1125
Można też użyć opcji "switch when released" i wszystko się wyłączy bez potrzeby cofania stop-u.
Jeszcze raz dzięki za pomoc. Temat został wyczerpany.

pozdro