zamykanie programu EXE

Tematyka związana z Aplication Builderem oraz tworzeniem wersji exe programów w LabVIEW. Problemy związane z instalatorem programów oraz ich zabezpieczaniem.
santiago
Posty: 65
Rejestracja: 31 maja 2007 00:00

zamykanie programu EXE

Post autor: santiago »

Witam!!

Jak zrobić aby zamykając program EXE za pomocą "X" program zatrzymywał pętle While Loop, tak jakbym wciskał przycisk STOP oraz wykonywał tą część, która jest poza pętlą (np zamknięcie portu).

POZDRAWIAM!!
Awatar użytkownika
Pitol
Moderator
Posty: 984
Rejestracja: 19 lip 2007 00:00
Wersja środowiska: LabVIEW 2019
Lokalizacja: Kraków

zamykanie programu EXE

Post autor: Pitol »

wykorzystaj Event: Panel Close? gdzie podpinasz Discard na True i terminator pętli też na True. Spowoduje to, że Panel nie zostanie zamknięty a pętla się skończy i kod za pętlą zostanie wykonany (jeśli chcesz zamknąć panel będziesz musiał to zrobić teraz programowo: patrz na rysunek)
panelclose.png
ObrazekObrazekObrazek
Chcesz taki podpis? Zajrzyj tutaj
santiago
Posty: 65
Rejestracja: 31 maja 2007 00:00

Re: zamykanie programu EXE

Post autor: santiago »

Witam!

Zrobiłem jak radzi kolega, niestety nie działa. Również i pętla nie działa nie wiedzieć czemu.
W zamyśle powinno funkcjonować to w taki sposób, aby w trakcie działania programu można było zmieniać wartość liczbową, a po zamknięciu programu wartość ta była zapamiętywana.
W załączniku plik i screen.
POZDRAWIAM!!
Załączniki
przyklad2.vi
(19.4 KiB) Pobrany 584 razy
przyklad2.JPG
Awatar użytkownika
Pitol
Moderator
Posty: 984
Rejestracja: 19 lip 2007 00:00
Wersja środowiska: LabVIEW 2019
Lokalizacja: Kraków

Re: zamykanie programu EXE

Post autor: Pitol »

pętla nie działa ze względu na strukturę event, która czekając na obsługę zdarzeń blokuje pętlę While. Aby Twoja pętla działała (kręciła się non-stop) możesz np. podpiąć wejście Timeout (lewy górny róg struktury Event, ustaw powiedzmy na 50) i obsłużyć zdarzenie Timeout. Wtedy pętla będzie odświeżała się co 50ms.
ObrazekObrazekObrazek
Chcesz taki podpis? Zajrzyj tutaj
Awatar użytkownika
coolfon
Posty: 232
Rejestracja: 01 gru 2007 08:59
Wersja środowiska: LabVIEW 2009
Kontakt:

Re: zamykanie programu EXE

Post autor: coolfon »

santiago pisze: Również i pętla nie działa nie wiedzieć czemu
Pętla jak najbardziej działa! Po prostu czeka, aż 'wykona się' jej cała zawartość, w tym struktura Event. Ta z kolei czeka na jakiś event właśnie. Odpal sobie swój VI z włączoną opcją Highlight Execution (żarówka) to zobaczysz jak się program zachowuje.

Ogólnie rzecz biorąc, strukturę Event powinno się wrzucać do pętli While solo, bez dodatkowych elementów.

Aha... Czemu tak bardzo komplikujesz odczyt/zapis do pliku? Koniecznie potrzebujesz Open/Create/Replace File oraz Set File Position.
santiago
Posty: 65
Rejestracja: 31 maja 2007 00:00

Re: zamykanie programu EXE

Post autor: santiago »

OK!

Z "Timeout" działa :)
Ale kombinując zrobiłem jeszcze trochę inaczej, jednakże też nie bardzo chce działać :-? (załączniki)

"Czemu tak bardzo komplikujesz odczyt/zapis do pliku" - bo tak umiałem :) Może jakaś sugestia jak prościej??

POZDRAWIAM!!
Załączniki
przyklad1.vi
(22.25 KiB) Pobrany 610 razy
przyklad1.PNG
Awatar użytkownika
Pitol
Moderator
Posty: 984
Rejestracja: 19 lip 2007 00:00
Wersja środowiska: LabVIEW 2019
Lokalizacja: Kraków

Re: zamykanie programu EXE

Post autor: Pitol »

teraz to przesadziłeś :D
wsadź strukturę Event do pętli While z powrotem to będzie działać (nie zapomnij o Timeout)

albo wróć do poprzedniej koncepcji:
screen.png
EDIT:
nie przejmuj się tymi referencjami, LV2009 przy robieniu zrzutów ekranu generuje takie kwiatki
tak na przyszłość podawaj wersję LV z której korzystasz. Pozwoli to zapisywać przykłady dla Ciebie w odpowiedniej wersji. Nie podałeś wersji = przerysowuj sobie ze screena :P
ObrazekObrazekObrazek
Chcesz taki podpis? Zajrzyj tutaj
santiago
Posty: 65
Rejestracja: 31 maja 2007 00:00

Re: zamykanie programu EXE

Post autor: santiago »

OK! Ze strukturą Event - w pętli działa, ale niestety nie tak jak tego oczekiwałem. A mianowicie po utworzeniu pliku EXE, aby zamknąć program muszę dwa razy kliknąć na "X". Gdy klikam raz program po prostu się zatrzymuje, przy drugim kliknięciu zamyka się. Jak zrobić, żeby całość załatwić jednym kliknięciem????
Awatar użytkownika
coolfon
Posty: 232
Rejestracja: 01 gru 2007 08:59
Wersja środowiska: LabVIEW 2009
Kontakt:

zamykanie programu EXE

Post autor: coolfon »

A dałeś metodę (Invoke Node) FP.Close na końcu? Wrzuć swój VI (plik, nie obrazek).
santiago
Posty: 65
Rejestracja: 31 maja 2007 00:00

Re: zamykanie programu EXE

Post autor: santiago »

W załączniku plik :)
LabView wersja 8.5
Załączniki
przyklad3.vi
(20.06 KiB) Pobrany 631 razy
Ostatnio zmieniony 04 maja 2010 20:00 przez santiago, łącznie zmieniany 1 raz.
Awatar użytkownika
Pitol
Moderator
Posty: 984
Rejestracja: 19 lip 2007 00:00
Wersja środowiska: LabVIEW 2019
Lokalizacja: Kraków

zamykanie programu EXE

Post autor: Pitol »

spójrz na to co w pierwszej odpowiedzi Ci podesłałem. Tak jak coolfon napisał -> Metodę FP.Close należy zapiąć po wykonaniu wszystkich czynności.
ObrazekObrazekObrazek
Chcesz taki podpis? Zajrzyj tutaj
Awatar użytkownika
coolfon
Posty: 232
Rejestracja: 01 gru 2007 08:59
Wersja środowiska: LabVIEW 2009
Kontakt:

Re: zamykanie programu EXE

Post autor: coolfon »

No to przecież pytałem przed chwilą...
coolfon pisze:A dałeś metodę (Invoke Node) FP.Close na końcu?
Pitol już w pierwszym swoim poście Ci pokazał jak to zrobić. Przecież coś ten Front Panel musi zamknąć. FP.Close => Front Panel Close.
Awatar użytkownika
Pitol
Moderator
Posty: 984
Rejestracja: 19 lip 2007 00:00
Wersja środowiska: LabVIEW 2019
Lokalizacja: Kraków

Re: zamykanie programu EXE

Post autor: Pitol »

Jakbyś nie wiedział jak dorwać się do FP.Close to tutaj masz mapę:
Paleta Application Control -> Invoke Node, potem prawym na nią i:
VI.PNG
a potem:
FP.PNG
ObrazekObrazekObrazek
Chcesz taki podpis? Zajrzyj tutaj
santiago
Posty: 65
Rejestracja: 31 maja 2007 00:00

Re: zamykanie programu EXE

Post autor: santiago »

Czytasz w myślach :) bo nie wiedziałem jak to zrobić...
Serdecznie dziękuję za pomoc!!!
ODPOWIEDZ