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.
Timer wewnątrz aplikacji
Re: Timer wewnątrz aplikacji
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
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
- Załączniki
-
- timer.png (13.53 KiB) Przejrzano 7524 razy
Timer wewnątrz aplikacji
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.
Ostatnio zmieniony 17 lip 2013 21:40 przez milten, łącznie zmieniany 1 raz.

Timer wewnątrz aplikacji
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
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
Ostatnio zmieniony 17 lip 2013 23:31 przez Lock, łącznie zmieniany 1 raz.
Timer wewnątrz aplikacji
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
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
Nie wiem, mi jakoś nie działają te dwa wątki równolegle

Timer wewnątrz aplikacji
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. 
