Zdarzenia w programach VI (zdarzenia rejestrowane dynamicznie)

Slides:



Advertisements
Podobne prezentacje
Zerowanie mikroprocesorów Cel: wprowadzenie mikroprocesora w określony stan początkowy Zwykle realizowany poprzez: inicjalizację licznika rozkazów (PC)
Advertisements

Język C/C++ Funkcje.
Programowanie obiektowe
Związki w UML.
Procedury wyzwalane Procedura wyzwalana (ang. trigger) - stanowi kod użytkownika przechowywany wewnątrz bazy i uruchamiany w określonych sytuacjach np.
Jarosław Kuchta Monitory.
Wzorce.
Semafory Autorzy : Michał Winciorek Łukasz Jackowicz.
Elementarne struktury danych Piotr Prokopowicz
Projekt modułu Gra strategiczna „Strusia jama” Wyrzutnie
Wykład 5 Przerwania w systemie SAB80C537 dr inż. Andrzej Przybył
ANALITYCZNE MODELE SYSTEMÓW KOLEJKOWYCH
Struktury.
Systemy operacyjne Wykład nr 4: Procesy Piotr Bilski.
Wykład nr 2: Struktura systemu komputerowego a system operacyjny
Biblioteki i przestrzenie nazw
Dynamiczne struktury danych 1
Temat nr 10: System przerwań
Zadanie 1.
Projektowanie i programowanie obiektowe II - Wykład IV
Obiekty kontrolne i prezentacyjne pulpitu aplikacji
Podstawy programowania aplikacji w środowisku graficznym LabView
Aplikacja jako automat skończony
ZARZĄDZANIE PROCESAMI
Projektowanie dynamiki - diagramy interakcji
Bazy Danych II prowadzący: mgr inż. Leszek Siwik
OPERACJA DZIELENIA W SQL
Inżynieria Oprogramowania
Wykonawcy:Magdalena Bęczkowska Łukasz Maliszewski Piotr Kwiatek Piotr Litwiniuk Paweł Głębocki.
Podstawy programowania II
Konsole wirtualne, terminale.
Prezentacja funkcjonalności dziennika e-klasa
Podstawy programowania
Tworzenie nowych kont lokalnych i domenowych, oraz zarządzanie nimi
Podstawowa obsługa magazynu.
Prezentacja funkcjonalności dziennika e-klasa
1 PREZENTACJA FUNKCJONALNOŚCI DZIENNIKA UCZNIA Moduł Dyrektora ZAPRASZAMY ZAPRASZAMY O&S Computer-Soft ul. Żwirki i Wigury 8-12, Wałbrzych, woj.
System e-zamówienia.
Prezentacja opisuje mechanizm pracy
Prezentacja i szkolenie
Inicjalizacja i sprzątanie
Buforowanie D e f i n i c j a.
Programowanie obiektowe 2013/2014
MICROSOFT Access TWORZENIE MAKR
ZWIĄZKI MIĘDZY KLASAMI KLASY ABSTRAKCYJNE OGRANICZENIA INTERFEJSY SZABLONY safa Michał Telus.
Ms Access Formularze i raporty Marzena Nowakowska KIS, WZiMK, PŚk

Wykład 7 Synchronizacja procesów i wątków
W ą t e k (lekki proces) thread.
Zadanie 1.
UML W V ISUAL S TUDIO Mateusz Lamparski. UML D EFINICJA Unified Modeling Language (UML) to graficzny język do obrazowania, specyfikowania, tworzenia i.
Diagram aktywności (czynności)
Diagram czynności Diagram czynności (activity diagram) służy do modelowania dynamicznych aspektów systemu. Diagram czynności przedstawia sekwencyjne lub.
Procesy, wątki Program a proces Proces: Przestrzeń adresowa, kod, dane, stos (część pamięci do przechowania zmiennych lokalnych i niektórych adresów) Otwarte.
Projektowanie obiektowe. Przykład: Punktem wyjścia w obiektowym tworzeniu systemu informacyjnego jest zawsze pewien model biznesowy. Przykład: Diagram.
Dr inż. Bożena Mielczarek
Tryby adresowania i formaty rozkazów mikroprocesora
Tworzenie wykresów część I
Wstęp do programowania Wykład 7
Środowisko wspomagania automatycznej instalacji GNU/Linux „Multistart” prezentacja pracy dyplomowej Marta i Paweł Szcześniak.
Hooks w systemie Windows Autorzy: Paweł Kwiecień, Wojciech Kruczkowski Temat: Modelowanie użytkowników Zadaniem jest stworzenie (lub modyfikacja) systemu,
ASP.NET Dostęp do bazy danych z poziomu kodu Elżbieta Mrówka-Matejewska.
K URS JĘZYKA C++ – WYKŁAD 3 ( ) Przenoszenie Składowe statyczne Funkcje wbudowane Argumenty domyślne.
Temat: Tworzenie bazy danych
T. 18. E Proces DGA - Działania (operatorka).
AudaPad / AudaShare AudaShare PRO (2.8)
PROGRAMY DO KONTROLI RODZICIELSKIEJ
PROGRAMY DO KONTROLI RODZICIELSKIEJ
Ms Access - formularze Marzena Nowakowska WZiMK, PŚk
Excel Informacje różne.
Zapis prezentacji:

Zdarzenia w programach VI (zdarzenia rejestrowane dynamicznie)

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.

Problematyczne konstrukcje programowe

Źródła zdarzeń

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

Tryby rejestracji zdarzeń Aplikacja wymaga pewnego ograniczonego zestawu zdarzeń. Zdarzenia inne niż wymagane nie powinny być generowane. Rejestracja odpowiada za aktywizację wybranych 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ń. 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.

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)

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.

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.

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.

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

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.

Funkcja dynamicznej rejestracji zdarzeń

Konstrukcja obsługi zdarzeń dynamicznych

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

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.

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.

Zdarzenia programowe – rejestracja zdarzenia

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

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.

Model aplikacji – producent/konsument

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.

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.

Producent/konsument - problemy 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.

Producent/konsument – problemy (cd. ) 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 ): Set Occurrence Wszystkie węzły które oczekują na wydarzenie wychodzą ze stanu oczekiwania (kończą oczekiwanie). Generate Occurrence Wait on Occurrence Przykład: Continuously Generate Occurrences.vi