Zmienna globalna - wykrywanie zdarzenia (event structure)

Jeśli masz coś do powiedzenia w sprawie LabVIEW napisz. Tutaj są tematy, których nie można uściślić do innych działów.
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: Zmienna globalna - wykrywanie zdarzenia (event structure

Post autor: jogurt_owocowy »

Pętla while zakręci się wtedy gdy pojawi się zdarzenie obsługiwane przez event, a to zdarzenie (czyli przepisanie danych ze zmiennej globalnej i zmiana wartości Boolean) pojawi się wtedy, gdy... zakręci się pętla. Chyba, że w evencie jest zdarzenie Timeout, tyle, że w tym wypadku jest to bez sensu (choćby temu, że nic się w nim nie robi). Po kolei 1. Usuń zdarzenie Timeout ze struktury event - pozostaw mu niepodpiętą klepsydrę (lewy, górny róg struktury). 2. Przepisywanie wartości ze zmiennej globalnej do Property Node przenieś do drugiej, równoległej pętli.
plus to co napisał Mikrobi
funkcja Wait until (ms) jest absolutnie niepotrzebna. Przycisk stop powinien być obsłużony przez strukturę event
I musi działać
dynamo
Posty: 6
Rejestracja: 16 lut 2007 00:00

Re: Zmienna globalna - wykrywanie zdarzenia (event structure

Post autor: dynamo »

Naprawdę nie wiem już co z tym zrobić, robię dokładnie tak jak radzisz mi jogurt_owocowy i efekt mam taki że pętla odpowiedzialna za wykrycie zdarzenia kręci się cały czas. Natomiast wszystko działa poprawnie jeśli wybiorę jako zdarzenie kontrolkę bez Property Node pobudzaną bezpośrednio z panelu operatora. Jak tylko do kontrolki przepisywana jest jakaś wartość poprzez Property Node za pomocą własności Value(signaling) pętla tego zdarzenia wykonuje się wielokrotnie.
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: Zmienna globalna - wykrywanie zdarzenia (event structure)

Post autor: jogurt_owocowy »

Mam problem taki, że nie mogę Ci niestety podesłać teraz, ani obrazka, ani przykładowego pliku - tak byłoby najlepiej.
Powiedzmy sobie szczerze - Twój program nie jest ładny, problem może leżeć gdzie indziej i może być ciężko go znaleźć.

Jutro postaram się wrzucić jakiś przykład, cierpliwości.
PMaj
Posty: 231
Rejestracja: 04 sty 2004 00:00

Re: Zmienna globalna - wykrywanie zdarzenia (event structure

Post autor: PMaj »

Niestety wychodzi na wierzch zła struktura programu - a od tego należałoby zacząć - czyli od zadania pytania: po co używasz Value Signaling? po to żeby wywołać zdarzenie? --> użyj User Event
Przesyłanie danych pomiędzy wątkami wykonuje się przy pomocy funkcji z menu synchronization patrz help i examples w celu zapoznania się z użyciem, lub User Event - i tą właśnie metode (User Event) powinieneś tu użyć ! Nie jest to oczywiście konieczne jeżeli program jest mały i taki ma pozostać.
PS. Osobiście uważam że Value(signaling) w property node mogłoby nie być zmiennych globalnych również
pozdrawiam pmaj
Nie jestem leniwy
Mam zawyżone wymagania motywacyjne
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: Zmienna globalna - wykrywanie zdarzenia (event structure

Post autor: jogurt_owocowy »

Zgodnie z obietnicą w załączniku stosowny przykład obsługi zdarzenia wywoływanego za pomocą własności Value (Signaling). Górna pętla symuluje przepisanie danych z Twojej zmiennej globalnej do kontrolki; dolna - obsługę takiego eventu.
Jak widać działa - pętla nie wykonuje się w kółko, więc problem u Ciebie musi tkwić gdzie indziej.

Przeanalizuj swój program w trybie debug (z włączoną żarówką) i powinieneś znaleźć błąd.

Pozdrawiam
ODPOWIEDZ