Rozłączanie połączenia w libnodave

0
4

Ten wpis jest bardziej ku własnej pamięci, jako że libnodave nie jest zapewne zbyt często używaną biblioteką.

Używam libnodave do odczytu/zapisu danych ze sterownikami Simatic S7. Jakiś czas temu natrafiłem na pewien problem, otóż jeżeli tworzymy obiekt klasy odpowiedzialnej za połączenie ze sterownikiem i nawiązujemy połączenie wszystko działa ok. aż do momentu kiedy to połączenie nawiążemy po raz 7-my. Kolejne połączenie się nie udaje.

W Dispose mojej klasy używałem zawsze disconnectPLC na obiekcie klasylibnodave.DaveConnection oraz disconnectAdapter na obiekcie klasylibnodave.daveInterface.

Jak się okazuje to było zbyt mało, konieczne jest jeszcze zamknięcie portu komunikacyjnego przez

, gdzie fds.rdf zawiera parametry otwartego wcześniej gniazda. Bez tej linijki libnodave uzupełniał kolejkę połączeń o kolejne nowo otwarte połączenie, a kolejka równoczesnych połączeń pozwala tylko na 7 równoczesnych połączeń.

Zaskakujące, że czasem rozwiązanie dręczącego od dawna problemu jest w jednej tylko linijce kodu …

ZOSTAW ODPOWIEDŹ

Please enter your comment!
Please enter your name here