Cykliczne odpytywanie przez telnet.

0

Cześć koledzy i koleżanki,
Potrzebuje pomysł na realizację pewnego konceptu, a konkretnie nakierowania na rozwiązanie - szkielet programu.
Zacząłem coś dłubać w WPF i tak: Program ma łączyć się przez telnet z innym urządzeniem i cyklicznie wysyłać komendy i odpytywać o pomiary i stany. W trakcie połączenia interfejs musi realizować wizualizację pomiarów. Częstotliwość niezbyt duża, powiedzmy co sekundę lub rzadziej. Korzystam z biblioteki Minimalistic telnet i to działa. Tzn łącze się z serwerem, wysyłam komendę, czytam odpowiedź i wyświetlam ją na ekranie. Pytanie tylko jak to zrobić cyklicznie? Powiedzmy, że w tej chwili po wciśnięciu buttona connect tworzę obiekt który opowiada za połączenie i w procedurze obsługi przycisku dzieje się cała reszta. Jak teraz rozegrać to aby możliwe było cykliczne odpytywanie i kontrolowanie połączenia? Czy może ktoś podsunąć jakiś pomysł? Jeśli użyję timera to w procedurze obsługi nie mogę korzystać z metod połączenia, ponieważ obiekt był utworzony w innym miejscu. Wiem, to pewnie jest bardzo proste, ale nie zajmuję się tym na codzień, ani zawodowo ani hobbystycznie. Tak na potrzeby chwili próbuje coś ogarnąć.

0

Cześć 
Nie wiem do końca jak to ma działać. Jednak nieśmiało zaproponuję użycie pętli w której zostanie umieszczony cały kod do cyklicznego wykonywania. Oczywiście wywołanie tej pętli po trigerze naciśnięcia przycisku.

0

Odpal w zdarzeniu w trakcie/ po załadowaniu okna metodę, która Ci zainicjuje obiekt i przypisz go do zmiennej.
Możesz użyć timera, który w swoich zdarzeniu będzie korzystał z tego obiektu, ale musisz sobie sprawdzać, czy obiekt w dalszym ciągu jest poprawny (stan połączenia etc, czy nie jest nullem) i jakoś na to zareagować. W dokumentacji pewnie będzie napisane czy należy otwierać i zamykać połączenie za każdym razem, czy też może być cały czas otwarte.

0

Hmm chyba najbardziej rozchodzi mi się o to, aby utworzyć obiekt klasy telnetConnection po kliknięciu przycisku (inicjacja połączenia z wybranymi parametrami) i mieć do niego zawsze dostęp: Po kliknięciu innego przycisku zamknąć połączenia (wywołać metode Close()) w tym obiekcie, Po kliknięciu innego przycisku wysłać dane , a w cyklicznym timerze odczytywać dane metodą Read() i logować do pliku. Nie ustawiać kolejnej instancji połączenia za każdym razem tylko utrzymać jedno i z niego korzystać.

0

po prostu zrób pole na poziomie klasy i nie widzę przeszkód żeby zrobić tak jak mówisz, nie widzę też czemu timer nie mógłby korzystać z tego obiektu

może pokaż kod, powiedz jakie dostajesz błędy kiedy próbujesz użyć z timera itp

jeśli chcesz proste rozwiązanie to jednak proponuję łączyć się za każdym razem, odczytywać i zamykać połączenie. w ten sposób oszczędzisz sobie problemów z utrzymywaniem połączenia, reagowaniem na błędy itp. a narzut ponownego łączenia nie powinien być istotny jeśli nie robisz tego kilkadziesiąt razy na sekundę

1 użytkowników online, w tym zalogowanych: 0, gości: 1