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.
TCP Listen - ciągły nasłuch ??
- pazuzu
- Posty: 30
- Rejestracja: 20 lip 2006 00:00
- Wersja środowiska: LabVIEW 8.0
- Lokalizacja: Jaworzno
TCP Listen - ciągły nasłuch ??
Natural Born Philosopher ! 

- 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 ??
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 ]
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.
- pazuzu
- Posty: 30
- Rejestracja: 20 lip 2006 00:00
- Wersja środowiska: LabVIEW 8.0
- Lokalizacja: Jaworzno
Re: TCP Listen - ciągły nasłuch ??
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.
dzieki wielkie Jogurt_Owocowy za podsuniecie pomyslu na rozwiazanie a wlasciwie samego rozwiazania ;] Wiedzialem ze to trzeba jakos tak zrobic ale nie wiedzialem jak

Pozdrawiam i jeszcze raz dziekuje.
Natural Born Philosopher ! 

- 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 ??
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 :]
Pozdrawiam i powodzenia dalej :]