TCP Listen - ciągły nasłuch ??

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
pazuzu
Posty: 30
Rejestracja: 20 lip 2006 00:00
Wersja środowiska: LabVIEW 8.0
Lokalizacja: Jaworzno

TCP Listen - ciągły nasłuch ??

Post autor: pazuzu »

Witam wszystkich Forumowiczów ;]

Mam taki mały problem. Chciałbym zrobić taki mały serwer który działa cały czas i przyjmuje komendy od kontrolera. Komunikacja odbywa się o TCP. Zrobiłem ten serwer oraz kontroler w oparciu o przykłady z LV, simple data serwer oraz client. Wszystko działa bardzo dobrze ( przynajmniej tak mi się wydaje ) do momentu rozłączenia się przez kontroler. Serwer dalej działa, nie ma żadnych błędów. Problem występuje w momencie gdy chcę ponownie podłączyć kontroler. Za drugim razem już to nie działa. I w tym miejscu chciałbym się was zapytać czy jest może jakiś prosty albo niekoniecznie prosty sposób na rozwiązanie tego problemu. Będę wdzięczny za każdą rade. Poniżej moje programiki.
Natural Born Philosopher ! :)
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: TCP Listen - ciągły nasłuch ??

Post autor: jogurt_owocowy »

Twój program działa w ten sposób
1. Uruchamiasz serwer - program zatrzymuje się na TCP Listen czekając na połączenie. 2. Uruchamiasz kontroler - klocek TCP Listen na serwerze wtedy się budzi, zwraca identyfikator połączenia i program wchodzi do pętli. 3. Teraz wszystko fajnie działa... 4. Wyłączasz kontroler i włączasz go ponownie. Tym razem jednak połączenie nie zostanie nawiązane, bo serwer wciąż się kręci w swojej pętli, a tam nie ma klocka TCP Listen czekającego na połączenie.
Proste rozwiązanie jest takie: Na wyjściu error out klocka TCP Read w głównej pętli serwera daj Create -> Indicator. Włącz programiki i zauważ, że w momencie gdy wyłączysz kontroler na wspomnianym wyjściu error out pojawi się błąd, a to już dużo nam daje. Dzięki temu można serwer zrobić jako prostą maszynkę dwóch stanów o nazwach np. "Nasłuchuj" i "Transmituj". Po uruchomieniu programu maszynka wchodzi w stan "Nasłuchuj". Po "usłyszeniu" połączenia następuje zmiana stanu na "Transmituj" - tam umieść tą dużą pętlę. W przypadku. gdy na wyjściu klocka TCP Read pojawi się błąd, program wchodzi znów w stan "Nasłuchuj" i tak w kółko.
Pozdrawiam ]
Ostatnio zmieniony 08 lut 2008 15:00 przez jogurt_owocowy, łącznie zmieniany 1 raz.
Awatar użytkownika
pazuzu
Posty: 30
Rejestracja: 20 lip 2006 00:00
Wersja środowiska: LabVIEW 8.0
Lokalizacja: Jaworzno

Re: TCP Listen - ciągły nasłuch ??

Post autor: pazuzu »

witam
dzieki wielkie Jogurt_Owocowy za podsuniecie pomyslu na rozwiazanie a wlasciwie samego rozwiazania ;] Wiedzialem ze to trzeba jakos tak zrobic ale nie wiedzialem jak :) Ponizej zamieszczam poprawiona wersje TCP serwer2 gdzie uwzglednilem to co mi doradziles. Dziala i mysle ze jest w miare poprawnie to zrobione. Gdyby bylo inaczej prosze o wyprowadzenie mnie z bledu ;]
Pozdrawiam i jeszcze raz dziekuje.
Natural Born Philosopher ! :)
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: TCP Listen - ciągły nasłuch ??

Post autor: jogurt_owocowy »

W sumie to chodziło mi o coś ciut innego, ale to co zamieściłeś też będzie działać dobrze.

Pozdrawiam i powodzenia dalej :]
ODPOWIEDZ