Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Zdarzenia w programach VI (zdarzenia rejestrowane dynamicznie)

Podobne prezentacje


Prezentacja na temat: "Zdarzenia w programach VI (zdarzenia rejestrowane dynamicznie)"— Zapis prezentacji:

1 Zdarzenia w programach VI (zdarzenia rejestrowane dynamicznie)

2 Konstrukcja obsługi zdarzeń Terminal czasu przeterminowania służy do określenia czasu oczekiwania konstrukcji na zdarzenie. Jest definiowany w milisekundach: Wartość –1 oznacza nieograniczone oczekiwanie na zdarzenie. Wartość >0 aktywizuje kontrolę przeterminowania i wtedy jeśli nie wystąpi żadne zdarzenie w zadeklarowanym okresie oczekiwania,wówczas jest realizowana ramka przeterminowania.

3 Problematyczne konstrukcje programowe A) B)

4 Źródła zdarzeń

5 Źródła zdarzeń (cd.) Przykład: UsingSplitterBars.vi

6 Tryby rejestracji zdarzeń Rejestracja statyczna obowiązuje przez cały czas działania programu VI i nie można jej modyfikować podczas działania programu. Jest ustalana na etapie konstrukcji diagramu VI oraz konfigurowania jego konstrukcji zdarzeniowych. Dotyczy wyłącznie źródeł zdarzeń związanych bezpośrednio z wykonywanym programem VI. Wykonuje się automatycznie w momencie startu programu VI zawierającego konstrukcje obsługi zdarzeń. Aplikacja wymaga pewnego ograniczonego zestawu zdarzeń. Zdarzenia inne niż wymagane nie powinny być generowane. Rejestracja odpowiada za aktywizację wybranych zdarzeń. Rejestracja dynamiczna zdarzeń omija ograniczenia rejestracji statycznej. Umożliwia modyfikację listy udostępnionych zdarzeń w czasie działania programu. Pozwala także rejestrować i obsługiwać zdarzenia pochodzące z innego VI.

7 Rejestracja statyczna Zdarzenia wymienione w liście ramek są rejestrowane automatycznie w chwili uruchomienia programu i pozostają aktywne przez cały czas działania programu zawierającego przedstawioną konstrukcję. Zdarzenia te mogą dotyczyć Aplikacji LabView, programu VI i obiektów jego panelu czołowego. Przykład: Static_Events.vi (zastosowanie węzła własności do obiektu określonego referencją; pobranie etykiety i wartości)

8 Rejestracja dynamiczna Celem rejestracji dynamicznej jest uaktywnienie wybranych zdarzeń na pewien okres podczas działania programu. Rejestracja dynamiczna dotyczy tych samych zdarzeń co rejestracja statyczna. Program, aby zarejestrować zdarzenie musi dysponować określeniem jego źródła oraz rodzaju zdarzenia. Odpowiada za to węzeł rejestracji zdarzeń (Register For Events), który: na podstawie referencji do wybranego źródła zdarzeń otwiera listę dostępnych zdarzeń dla tego źródła a pole z wybranym zdarzeniem zostaje zarejestrowane (uaktywnione). Referencje pozwalają określić źródło zdarzeń należące również do innych programów VI a także programów uruchomionych na innych maszynach.

9 Rejestracja dynamiczna - realizacja Ctl Refnum – wejście subVI dostarczające referencję do obiektu kontrolnego programu wywołującego ten podprogram (zdarzenie od zewnętrznego obiektu). OK. Button – referencja do własnego obiektu kontrolnego. Referencje do obiektów oraz programów VI pozwalają określić źródło zdarzeń a funkcja rejestracji aktywizuje wybrany rodzaj zdarzenia dla danego źródła. Zarejestrowane zdarzenia są dostarczane konstrukcji obsługującej zdarzenia poprzez wejściowy terminal zdarzeń dynamicznych. Teraz dopiero okno edycji zdarzeń ramki struktury zdarzeniowej dysponuje listą źródeł zdarzeń rozszerzoną o zdefiniowane zdarzenia dynamiczne.

10 Blokada panelu czołowego po wystąpieniu zdarzenia Zdarzenia filtrowane zawsze wykorzystują blokadę ( nie ma opcji wyłączenia). Dla zdarzeń powiadamiających jest aktywna opcja wł./wył. blokady. Zdarzenia dynamiczne zawsze pracują bez blokady.

11 Rejestracja dynamiczna – określanie źródeł zdarzeń Referencje do źródeł zdarzeń typu oraz w odniesieniu do lokalnej i zdalnej maszyny.

12 Rejestracja dynamiczna – określanie źródeł zdarzeń (cd.) Sposób uzyskania referencji do obiektów innego programu VI. Sposób uzyskania referencji do własnych obiektów programu VI.

13 Funkcja dynamicznej rejestracji zdarzeń

14 Konstrukcja obsługi zdarzeń dynamicznych

15 Modyfikacja dynamicznej rejestracji zdarzeń Terminale zdarzeń dynamicznych pracują podobnie do rejestru przesuwnego konstrukcji pętli. Wyrejestrowanie zdarzenia Mouse Enter (dołączenie do wejścia referencji stałej nie będącej numerem referencyjnym). Ponowne zarejestrowanie zdarzenia Mouse Enter (dołączenie do wejścia referencji referencji do elementu kontrolnego LED). Przykład: Dynamic_Events.vi

16 Zdarzenia programowe LabView udostępnia zdarzenia programowe; czyli mechanizm pozwalający programowi VI w pewnych szczególnych sytuacjach generować zdarzenia. Zdarzenia tego typu służą głównie do asynchronicznego przekazywania danych pomiędzy różnymi fragmentami programu (z pominięciem dróg przepływu danych). Niezbędne elementy programowe : Definicja zdarzenia, Rejestracja zdarzenia, Generacja zdarzenia programowego. Destrukcja zdarzenia.

17 Zdarzenia programowe – definicja zdarzenia Zdefiniowanie zdarzenia wykonuje funkcja Create User Event: Nazwa danej (etykieta) określa nazwę definiowanego zdarzenia. Typ tej danej określa typ danej przenoszonej przez zdarzenie.

18 Zdarzenia programowe – rejestracja zdarzenia

19 Zdarzenia programowe – generacja zdarzenia Generację zdarzenia wykonuje funkcja Generate User Event. Dana przekazana funkcji jest daną zdarzenia, przenoszoną do miejsca obsługi zdarzenia. Tutaj generowanie zdarzeń następuje w iteracjach pętli będących wielokrotnością 100. Przenoszona dana jest numerem iteracji pętli, w której jest generowane zdarzenie. Przykład: User_Events.vi

20 Zdarzenia programowe – destrukcja zdarzeń Jeśli obsługa zdarzeń zarejestrowanych dynamicznie nie jest już potrzebna, należy je wyrejestrować za pomocą funkcji 'Unregister For Events'. Jej wykonanie powoduje odrejestrowanie wszystkich zdarzeń określonych przez doprowadzoną referencję oraz zlikwidowanie kolejki zdarzeń związanej z tą referencją. Brak wykonania tej operacji powoduje nieskończony rozrost kolejki zdarzeń. Pętla obsługi zdarzeń skończyła swoje działanie ale zdarzenia mogą być dalej generowane i wstawiane do kolejki zdarzeń oczekujących na obsłużenie. Teraz nie są obsługiwane i usuwane z kolejki.

21 Model aplikacji – producent/konsument

22 Producent/konsument Aplikacja zawiera równoległe pętle należące do dwóch kategorii: producentów danych i ich konsumentów. Komunikacja pomiędzy nimi jest realizowana za pomocą kolejki danych. Na wstępie kolejka jest inicjowana (Obtain Queue). Producent wstawia dane do kolejki (Enqueue Element) a konsument wyciąga dane z kolejki (Dequeue Element). Kolejka funkcjonuje jako FIFO (first-in/first-out), zatem konsument odbierze wszystkie dane wprowadzone przez producenta i analizuje je w kolejności ich wstawienia do kolejki.

23 Producent/konsument - przykład Przykład: Move-Window.vi Pętla producenta gromadzi w kolejce wszystkie zlecenia przesunięć okna aplikacji. Pętla konsumenta realizuje przesunięcia okna wyciągając zlecenia przesunięć z kolejki.

24 Producent/konsument - problemy Problem: Kolejki są ograniczone do przenoszenia określonych typów danych. Jeśli producent dostarcza różne typy danych to muszą one używać odrębnych kolejek. Tworzenie odrębnych kolejek stanowi poważny problem projektowy. Rozwiązanie: Kolejki akceptują tablice oraz klastry. Jeśli producent dostarcza różne typy danych to należy je umieścić w klastrze. W ten sposób zamaskuje się różnorodność przekazywanych danych.

25 Producent/konsument – problemy (cd. ) Problem: Model producent/konsument nie stosuje synchronizacji. Może to stanowić problem, jeśli jedna pętla zbyt wcześnie rozpocznie pracę. Rozwiązanie: Należy zastosować generację wydarzeń ( węzły occurrence ): Generate Occurrence Set Occurrence Wszystkie węzły które oczekują na wydarzenie wychodzą ze stanu oczekiwania (kończą oczekiwanie). Wait on Occurrence Przykład: Continuously Generate Occurrences.vi


Pobierz ppt "Zdarzenia w programach VI (zdarzenia rejestrowane dynamicznie)"

Podobne prezentacje


Reklamy Google