diff --git a/revpimodio2.e4p b/revpimodio2.e4p index 277149d..91961e3 100644 --- a/revpimodio2.e4p +++ b/revpimodio2.e4p @@ -1,7 +1,7 @@ - + en_US @@ -9,7 +9,7 @@ Python3 Console Das Modul stellt alle Devices und IOs aus der piCtory Konfiguration in Python3 zur Verfügung. Es ermöglicht den direkten Zugriff auf die Werte über deren vergebenen Namen. Lese- und Schreibaktionen mit dem Prozessabbild werden von dem Modul selbst verwaltet, ohne dass sich der Programmierer um Offsets und Adressen kümmern muss. Für die Gatewaymodule wie ModbusTCP oder Profinet sind eigene 'Inputs' und 'Outputs' über einen bestimmten Adressbereich definierbar. Auf diese IOs kann mit Python3 über den Namen direkt auf die Werte zugegriffen werden. - 2.1.0 + 2.1.1 Sven Sager akira@narux.de @@ -32,6 +32,7 @@ test/web_benniesrun.py test/web_benniesrunxxl.py revpimodio2/netio.py + test_trace.py @@ -181,6 +182,7 @@ setup.py + test_trace.py @@ -227,6 +229,7 @@ setup.py + test_trace.py @@ -278,7 +281,7 @@ ExcludeFiles - + */test_trace.py ExcludeMessages diff --git a/revpimodio2/__init__.py b/revpimodio2/__init__.py index db8d0d3..68e90d1 100644 --- a/revpimodio2/__init__.py +++ b/revpimodio2/__init__.py @@ -25,7 +25,7 @@ __all__ = [ __author__ = "Sven Sager " __name__ = "revpimodio2" __package__ = "revpimodio2" -__version__ = "2.1.0" +__version__ = "2.1.1" # Global package values OFF = 0 diff --git a/revpimodio2/modio.py b/revpimodio2/modio.py index 782a22a..e47121e 100644 --- a/revpimodio2/modio.py +++ b/revpimodio2/modio.py @@ -87,7 +87,7 @@ class RevPiModIO(object): def __del__(self): """Zerstoert alle Klassen um aufzuraeumen.""" self.exit(full=True) - if hasattr(self, "_myfh"): + if self._myfh is not None: self._myfh.close() def __evt_exit(self, signum, sigframe): @@ -116,7 +116,8 @@ class RevPiModIO(object): if len(self._lst_devselect) > 0: lst_found = [] - if type(self) == RevPiModIODriver: + if type(self) == RevPiModIODriver \ + or type(self) == RevPiNetIODriver: _searchtype = "VIRTUAL" else: _searchtype = None @@ -907,3 +908,7 @@ class RevPiModIODriver(RevPiModIOSelected): super().__init__( virtdev, autorefresh, False, syncoutputs, procimg, configrsc, True ) + + +# Nachträglicher Import +from .netio import RevPiNetIODriver diff --git a/revpimodio2/netio.py b/revpimodio2/netio.py index 4b40faa..e4a2837 100644 --- a/revpimodio2/netio.py +++ b/revpimodio2/netio.py @@ -128,6 +128,17 @@ class NetFH(Thread): self.__sockend = True self.__sockerr.set() + # Vom Socket sauber trennen + with self.__socklock: + try: + if self.__sockend: + self._slavesock.send(_sysexit) + else: + self._slavesock.shutdown(socket.SHUT_RDWR) + except: + pass + self._slavesock.close() + def flush(self): """Schreibpuffer senden.""" if self.__sockend: @@ -247,17 +258,6 @@ class NetFH(Thread): self.__trigger = False - # Vom Socket trennen - with self.__socklock: - try: - if self.__sockend: - self._slavesock.send(_sysexit) - else: - self._slavesock.shutdown(socket.SHUT_RDWR) - except: - pass - self._slavesock.close() - def seek(self, position): """Springt an angegebene Position. @param position An diese Position springen""" @@ -418,8 +418,9 @@ class RevPiNetIO(_RevPiModIO): # Netzwerkfilehandler anlegen self._myfh = self._create_myfh() - # Modul konfigurieren - self._configure(self.get_jconfigrsc()) + # Nur Konfigurieren, wenn nicht vererbt + if type(self) == RevPiNetIO: + self._configure(self.get_jconfigrsc()) def _create_myfh(self): """Erstellt NetworkFileObject. diff --git a/setup.py b/setup.py index 2d9043a..2c4deef 100644 --- a/setup.py +++ b/setup.py @@ -16,7 +16,7 @@ setup( license="LGPLv3", name="revpimodio2", - version="2.1.0", + version="2.1.1", packages=["revpimodio2"],