komunikacja za pośrednictwem sieci Internet TCP IP

Tematy związane z tworzeniem dużych aplikacji. Zaganiednia dotyczące architektury oraz zasad tworzenia optymalnych rozwiązań.
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: komunikacja za pośrednictwem sieci Internet TCP IP

Post autor: jogurt_owocowy »

proszę spojrzyj na na pierwszą odpowiedź na niniejszy wątek Jarq, jest tam mowa o dequeue
No fakt. Ja też biję się w pierś, bo nie zauważyłem, że jest o "dequeue", ale o semaforach nie ma (sprawdziłem!) ]
Rumcajs, ogólnie się zgadzam z tym co napisałeś i też uważam, że lepiej byłoby, gdyby posty typu "podłącz sobie while + event do sequence bez timeoutu synchronicznego w for..." nie były nigdy napisane. (Tutaj ukłon w stronę JB - autora pewnej książki do "nauki" języka C ;) )
Post Jarq wnosi do tematu hasło producer-consumer a to już sporo. Na pewno zabrakło wyjaśnienia, że "producer consumer (events)" to nazwa jednego ze wzorców projektów w LV (New... -> VI From Template). Pewnie, że lepiej jakby był obrazek, przykładowy kod, szerszy komentarz, ale w końcu po to jest forum - każdy może do tematu dopisać coś konstruktywnego, dodać obrazek...
A jeśli chodzi o eventy w wersji Basic, to mam na ten temat identyczne zdanie jak vugie.
Pozdrawiam ]
Awatar użytkownika
jabu74
Posty: 48
Rejestracja: 28 lis 2006 00:00

komunikacja za pośrednictwem sieci Internet TCP IP

Post autor: jabu74 »

właśnie o cuś takiego mi chodziło.

thx
Awatar użytkownika
jabu74
Posty: 48
Rejestracja: 28 lis 2006 00:00

komunikacja za pośrednictwem sieci Internet TCP IP

Post autor: jabu74 »

@jogurt

po dodaniu pętli i struktury event do projektu z rys1 główna pętla z bloczkami write tcp i read tcp nie działa prawidłowo tzn. działa b. krótko tylko w momencie kliknięcia na przycisk przypisany w evencie, a powinna wykonywać się w non stop w tle.
Ostatnio zmieniony 27 lis 2008 12:34 przez jabu74, łącznie zmieniany 1 raz.
Awatar użytkownika
jabu74
Posty: 48
Rejestracja: 28 lis 2006 00:00

Re: komunikacja za pośrednictwem sieci Internet TCP IP

Post autor: jabu74 »

pomóżcie proszę. stąnałem w miejscu i tracę bezcenny czas. :help:
Awatar użytkownika
Pitol
Moderator
Posty: 984
Rejestracja: 19 lip 2007 00:00
Wersja środowiska: LabVIEW 2019
Lokalizacja: Kraków

Re: komunikacja za pośrednictwem sieci Internet TCP IP

Post autor: Pitol »

jak coś ma latać w tle non stop to chyba nie tak podłącza się warunek zakończenia pętli... raczej False powinno być
Awatar użytkownika
jabu74
Posty: 48
Rejestracja: 28 lis 2006 00:00

komunikacja za pośrednictwem sieci Internet TCP IP

Post autor: jabu74 »

Pętla dolna chodzi dobrze jak jest na true. Program wysyła zapytania i jednocześnie odbiera odpowiedzi co 100ms. Po dodaniu dodatkowej pętli (górnej) program też dobrze chodzi. Nie chodzi prawidłowo jeżeli dodam strukturę event.
Wszystkie pętle są w strukturze case. Do wejścia case selector tej struktury podłączony jest przycisk "Połącz".
Awatar użytkownika
Mikrobi
Posty: 1210
Rejestracja: 08 paź 2003 00:00
Wersja środowiska: LabVIEW 2017

komunikacja za pośrednictwem sieci Internet TCP IP

Post autor: Mikrobi »

jabu74 - pętla dolna wykonuje sie raz. Pitol ma rację.
Istnieje opcja taka, gdzie uruchamiasz VI przyciskiem "Run Continously" jednak oglednie mówiąc nie zalecam takiego uruchamiania VIja. 8)
Sam pomysł z założeniem stałej w warunku zatrzymania pętli while jest powiedzmy, egzotyczny.
Co do prawidłowości pracy aplikacji po dodaniu struktury event, to prościej bedzie jeśli dołaczysz VI, bo na razie to wróżymy wszyscy z fragmentu diagramu.
Ostatnio zmieniony 27 lis 2008 17:18 przez Mikrobi, łącznie zmieniany 1 raz.
pozdrawiam
Mikrobi

LabVIEW Champion, CLD, CPI
Awatar użytkownika
jabu74
Posty: 48
Rejestracja: 28 lis 2006 00:00

Re: komunikacja za pośrednictwem sieci Internet TCP IP

Post autor: jabu74 »

Zgadza się. Macie racje z pętlą while. Ĺąle była zrobiona. Uruchamiałem aplikację metodą niezalecaną i dlatego to chodziło niby dobrze. Teraz w ogóle nie chodzi mi ta aplikacja (jak wciskam Run VI). Ale ze mnie matoł.

Podsumujmy:

1) aplikacja (rys1) ma się uruchomić przez wciśnięcie "Run" VI i działać do momentu wciśnięcia "Abort execution" VI lub jakiegoś przycisku STOP w aplikacji
2) połączenie z urządzeniem ma nastąpić po wciśnięciu przycisku "Połącz" i równocześnie ma zacząć wysyłać/odbierać dane co np. 100 ms

Jak to zmienić czyli jakie pętle i co w nich ?
Awatar użytkownika
jabu74
Posty: 48
Rejestracja: 28 lis 2006 00:00

komunikacja za pośrednictwem sieci Internet TCP IP

Post autor: jabu74 »

Wsadziłem wszystko do dodatkowej pętli while i uruchamia się już za pomocą przycisku "Run", a nie jak do tej pory "Run Continously". Ale żeby prawidłowo chodziło pętla z bloczkami TCP write i TCP read musi być tak jak na rys1 tzn. na true. Ale dalej nie wiem jak z tym event.
Awatar użytkownika
jabu74
Posty: 48
Rejestracja: 28 lis 2006 00:00

komunikacja za pośrednictwem sieci Internet TCP IP

Post autor: jabu74 »

jak zrobić ten cluster (projekt Jarq komendy.vi) i powiązać z nim te 3 przyciski ?
znalazłem ten cluster ale nie wiem co dalej. eventy nie działają i mam nadzieję, że ten pooling rozwiąże problem + struktura typu case
Jarq
Posty: 49
Rejestracja: 30 paź 2006 00:00
Wersja środowiska: LabVIEW 2009
Lokalizacja: Wrocław

komunikacja za pośrednictwem sieci Internet TCP IP

Post autor: Jarq »

Weź cluster wrzuć na front panel a do niego przyciski ;)
Awatar użytkownika
jabu74
Posty: 48
Rejestracja: 28 lis 2006 00:00

komunikacja za pośrednictwem sieci Internet TCP IP

Post autor: jabu74 »

hehe. a nie da się tego clastra zmienić na wypukły bo jest wklęsły ?
Awatar użytkownika
jabu74
Posty: 48
Rejestracja: 28 lis 2006 00:00

komunikacja za pośrednictwem sieci Internet TCP IP

Post autor: jabu74 »

a chyba mam. da się go zrobić (bez tego wklęsłego elementu dekoracyjnego) najprawdopodobniej przy wykorzystaniu bloczka Build Cluster Array. zaraz to sprawdze.
:-k
Awatar użytkownika
jabu74
Posty: 48
Rejestracja: 28 lis 2006 00:00

komunikacja za pośrednictwem sieci Internet TCP IP

Post autor: jabu74 »

nie dam rady zły pomysł porwałem się z motyką na słońce.

zrób wersję z samymi przyciskami bez elementu dekoracyjnego. czyli na wejściu tak jak poprzednio 3 przyciski (z możliwością rozbudowy) zwracające t/f i w zależności, który wciśnięty niech na wyjściu funkcja zwraca 0,1,2, a jeżeli żaden nie wciśnięty to -1.
Awatar użytkownika
Mikrobi
Posty: 1210
Rejestracja: 08 paź 2003 00:00
Wersja środowiska: LabVIEW 2017

komunikacja za pośrednictwem sieci Internet TCP IP

Post autor: Mikrobi »

Da się ukryć obramowanie, można połozyć taki klaster na wypukłej dekoracji. Controls>>Classic>>Classic Array, Matrix & Clusters klaster wypełniasz elementami, barwę ramki określasz jako transparencja [ T ]
Ostatnio zmieniony 05 gru 2008 14:34 przez Mikrobi, łącznie zmieniany 1 raz.
pozdrawiam
Mikrobi

LabVIEW Champion, CLD, CPI
ODPOWIEDZ