siema,
chce kontrolowac FPS gdy program jest w ruchu, program ktory zbudowalem pozwala mi na zmianie FPS ale tylko przed startem programu. Jak musze zmienic swoj program zebym mogl byc w stanie kontorlowac frames w ruchu?
zalaczam program.
dzieki
Kontrola FRAMES gdy program w ruchu?
Kontrola FRAMES gdy program w ruchu?
- Załączniki
-
- frame coontrol.vi
- (55.48 KiB) Pobrany 344 razy
-
- Administrator
- Posty: 1315
- Rejestracja: 30 lip 2003 00:00
- Wersja środowiska: LabVIEW 2015
- Lokalizacja: Ruda Śląska
- Kontakt:
Kontrola FRAMES gdy program w ruchu?
Witaj na forum
Patrząc w twój kod, widzę jeden podstawowy błąd.
Jeśli odczytujesz coś w sposób ciągły (nie poprzez pojedynczą próbkę) to należy część konfiguracji akwizycji i kończenia wątku akwizycji umieścić poza pętlę. W ten sposób zaoszczędzisz sporo procesora wykonując to samo zadanie i zmniejszysz czas potrzebny na odebranie próbek, w twoim przypadku obrazów.
Zobacz przykład z LabVIEW - Grab and Basic Attributes.vi.
U ciebie w pętli While powinno być umieszczone tylko IMAQdx Grab.vi oraz funkcje zatrzymania pętli oraz to co ciebie interesuje, czyli zmiana parametrów akwizycji.
Zauważ że, parametry zmieniasz za pomocą Property Node.
Nie wiem jak szybki ma być to układ akwizycji, ale możesz to rozwiązać w ten sposób.
W pętli While umieść Event Structure i w niej kod będzie poukładany następująco:
1. w ramce time out (ustaw sobie krótki czas, żeby to było często wykonywane (np. 1 ms) umieść funkcję Grab
2. dla każdego parametru, który chcesz zmieniać, utwórz zdarzenie (event - value change) które się wykona, gdy zmienisz dany parametr - w ramce będziesz poprzez Property Node tak jak teraz zmieniał poszczególne parametry.
Taka struktura będzie działać lepiej niż to co masz teraz.
Mam nadzieję, że to co opisałem jest zrozumiałe. Jeśli nie, napisz, znajdę trochę więcej czasu (mam nadzieje
).
bogdani
PS. Gratuluję, w porównanie z tym co tu czasem widzę, twój kod jest przejrzysty.
Patrząc w twój kod, widzę jeden podstawowy błąd.
Jeśli odczytujesz coś w sposób ciągły (nie poprzez pojedynczą próbkę) to należy część konfiguracji akwizycji i kończenia wątku akwizycji umieścić poza pętlę. W ten sposób zaoszczędzisz sporo procesora wykonując to samo zadanie i zmniejszysz czas potrzebny na odebranie próbek, w twoim przypadku obrazów.
Zobacz przykład z LabVIEW - Grab and Basic Attributes.vi.
U ciebie w pętli While powinno być umieszczone tylko IMAQdx Grab.vi oraz funkcje zatrzymania pętli oraz to co ciebie interesuje, czyli zmiana parametrów akwizycji.
Zauważ że, parametry zmieniasz za pomocą Property Node.
Nie wiem jak szybki ma być to układ akwizycji, ale możesz to rozwiązać w ten sposób.
W pętli While umieść Event Structure i w niej kod będzie poukładany następująco:
1. w ramce time out (ustaw sobie krótki czas, żeby to było często wykonywane (np. 1 ms) umieść funkcję Grab
2. dla każdego parametru, który chcesz zmieniać, utwórz zdarzenie (event - value change) które się wykona, gdy zmienisz dany parametr - w ramce będziesz poprzez Property Node tak jak teraz zmieniał poszczególne parametry.
Taka struktura będzie działać lepiej niż to co masz teraz.
Mam nadzieję, że to co opisałem jest zrozumiałe. Jeśli nie, napisz, znajdę trochę więcej czasu (mam nadzieje

bogdani
PS. Gratuluję, w porównanie z tym co tu czasem widzę, twój kod jest przejrzysty.