Strona 1 z 1

Timer wewnątrz aplikacji

: 17 lip 2013 12:27
autor: Lock
Witam!
Mam problem z budową timera. Mam dosyć rozbudowaną aplikację (jest to gra) w której muszę umieścić zwyczajny zegar. Szukałem w sieci podobnych rozwiązań lecz wszystkie, które znalazłem były stworzone na osobnej pętli. U mnie nie może być osobnej pętli ponieważ aplikacja powtarza wielkie połacie kodu w wielkiej pętli i jeśli zacznie wykonywać pętlę z timerem to nie przechodzi dalej. Zależy mi na tym, żeby było widać realny upływający czas i np. po 100 sekundach żeby cała aplikacja się zatrzymała.
Ma ktoś jakiś pomysł?
Pozdrawiam.

Re: Timer wewnątrz aplikacji

: 17 lip 2013 13:23
autor: Rolego
Hej!

Nie wiem czy dobrze zrozumiałem twój problem, jednak LabVIEW jest programem gdzie wielowątkowość jest dana za darmo i pętla zewnętrzna będzie się wykonywać równolegle do twojego kodu i czas rzeczywiście odmierzy.

W załączniku wysyłam 2 rozwiązania. Nie wiem czy są pomocne. Pierwsze z nich (po lewej stronie obrazka) bazuje na zewnętrznej pętli. Rozwiązanie po prawej stronie możesz żywcem wsadzić do twojej pętli obsługi zdarzeń. Dasz WaitUntilMs lub coś tego rodzaju i zasoby wykorzystane nie będą wysokie.

Pozdrawiam

Timer wewnątrz aplikacji

: 17 lip 2013 21:40
autor: milten
Jeżeli potrzebujesz tylko zmierzyć czas i np po tych 100 sekundach wyłączyć aplikację, to najlepiej użyć Elapsed Time. Jest to expres VI, który odmierzy Ci niezależnie jaki chcesz czas. Nie blokuje on aplikacji i jeżeli na szybko coś potrzebujesz, to on chyba najlepszym rozwiązaniem będzie.

Timer wewnątrz aplikacji

: 17 lip 2013 23:17
autor: Lock
Ogólnie to mam kilka pętli w sobie porobionych. Chodzi o to, żeby czas był odmierzany i wyświetlany gdzieś z boku i jeśli zostanie przekroczony czas to najbardziej zewnętrzna pętla powinna zostać automatycznie zatrzymana. Także kontrola czasu musi być cały czas, niezależnie w jakiej fazie wykonywania jest program. Chodzi o to, że sprawdzenie warunku czasowego dla najbardziej zewnętrznej pętli mam dopiero na samym końcu i można powiedzieć, że takich timerów muszę porobić kilka, w różnych fazach wykonywania programu.
Potrzebuje coś takiego co non stop będzie mi przekazywać wartości czasowe do wnętrza programu.
Tak wykonany timer przekaże mi czas tylko na samym początku. :/

Nie wiem czy dobrze tłumaczę o co chodzi. Już mi się mota wszystko :/

@edit
Tak jak myślałem...
Wpada mi w tą pętlę i z niej nie wychodzi ;/ Czyżby mój LabView nie wspierał wielowątkowości? : O

PS. Głównie chodzi mi o płynne wyświetlanie upływającego czasu

Timer wewnątrz aplikacji

: 17 lip 2013 23:28
autor: milten
Jeżeli chcesz z wielu miejsc odczytywać ten sam timer, to najlepszy będzie taki oparty na FGV. Poszukaj w internecie, albo na forum

Timer wewnątrz aplikacji

: 17 lip 2013 23:39
autor: Lock
Nie tyle chcę odczytywać co wyświetlać ten czas nieustannie i jak czas się skończy to żeby nie wykonywało dalej pętli wewnętrznych, zakończyło pętlę zewnętrzną i przeszło do kolejnej sekwencji.
Nie wiem, mi jakoś nie działają te dwa wątki równolegle :(

Timer wewnątrz aplikacji

: 27 sie 2013 11:43
autor: timpane
Jest to expres VI, który odmierzy Ci niezależnie jaki chcesz czas. Nie blokuje on aplikacji i jeżeli na szybko coś potrzebujesz, to on chyba najlepszym rozwiązaniem będzie. #-o