Strona 2 z 2

Re: Zmienna globalna - wykrywanie zdarzenia (event structure

: 19 lut 2007 18:07
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ć

Re: Zmienna globalna - wykrywanie zdarzenia (event structure

: 21 lut 2007 11:59
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.

Re: Zmienna globalna - wykrywanie zdarzenia (event structure)

: 21 lut 2007 12:40
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.

Re: Zmienna globalna - wykrywanie zdarzenia (event structure

: 21 lut 2007 12:41
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

Re: Zmienna globalna - wykrywanie zdarzenia (event structure

: 22 lut 2007 14:02
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