użycie jednego notyfikatora do dupleksowej komunikacji

Tematy związane z tworzeniem dużych aplikacji. Zaganiednia dotyczące architektury oraz zasad tworzenia optymalnych rozwiązań.
Awatar użytkownika
spec.kolombo
Posty: 126
Rejestracja: 20 sie 2008 06:33
Wersja środowiska: LabVIEW 2009
Lokalizacja: Gdynia
Kontakt:

użycie jednego notyfikatora do dupleksowej komunikacji

Post autor: spec.kolombo »

Cześć,
chciałem użyć notyfikatora którym najpierw program nadrzędny wysyłał rozkaz (string) do innego programu, a potem użył tego samego notyfikatora do nasłuchiwania czy podprogram wykonał żądaną operację. Pytanie brzmi, czy takie rozwiązanie jest "bezpieczne"? Np. podprogram wykonał tak szybko swoją operację, że program główny nie zdążył uruchomić bloczka "wait for notification" i nie zdążył zauważyć że podprogram już skończył - czy takie działanie jest możliwe?
Lepiej być bogatym i zdrowym, niż biednym i chorym.
Spec Kolombo
PiDi
Posty: 641
Rejestracja: 31 gru 2010 01:36
Wersja środowiska: LabVIEW 2017
Lokalizacja: Katowice

Re: użycie jednego notyfikatora do dupleksowej komunikacji

Post autor: PiDi »

Na początek przykład:
Notifier.vi
LV2009
(9.23 KiB) Pobrany 340 razy
A jak już się naklikałem, to w bloczku Wait on Notification jest wejście ignore previous, którego działanie radzę sprawdzić w dokumentacji ;)
ObrazekObrazekObrazekObrazek
Awatar użytkownika
spec.kolombo
Posty: 126
Rejestracja: 20 sie 2008 06:33
Wersja środowiska: LabVIEW 2009
Lokalizacja: Gdynia
Kontakt:

użycie jednego notyfikatora do dupleksowej komunikacji

Post autor: spec.kolombo »

Dzięki PiDi,
Trochę zmodyfikowałem twój VI, co by bardziej się zbliżyć do mojej sytuacji (dodałem bloczek wait for notification w pętli przycisku stop) i pokombinowałem z opóźnieniami. Wnioski są, ale nie wiem czy słuszne. Oto część z nich:
1. Program nadrzędny gdy zaczął czekać wcześniej niż podprogram wysłał, to odbiera swój ostatni notifikator i następnie leci dalej - to jest dla przypadku gdy "ignore previous" jest na false, natomiast dla ignore previous ustawiony na true - jest ok - poczeka i odbierze notyfikator z programu podrzędnego.
2. Ale, jeśli podprogram nada wcześniej niż program główny zacznie czekać to stracę ten notyfikator (przy ignore previous true) i program mi się zawiesi. Z kolei dla "ignore previous" ustawiony na false działa ok.

Więc nie będę kombinował i zrobię to na dwóch notyfikatorach, bo nie mogę pozwolić na żadne kompromisy. Dzięki za pomoc.

Pozdro!
Lepiej być bogatym i zdrowym, niż biednym i chorym.
Spec Kolombo
ODPOWIEDZ