diff --git a/doc/revpimodio2.netio.html b/doc/revpimodio2.netio.html index 3f674ae..4dd24da 100644 --- a/doc/revpimodio2.netio.html +++ b/doc/revpimodio2.netio.html @@ -12,7 +12,7 @@ RevPiModIO Hauptklasse fuer Netzwerkzugriff.

Global Attributes

- +
__author__
__copyright__
__license__
_sysdeldirty
_sysexit
_sysflush
_syspictory
_syspictoryh
_sysreplaceio
_sysreplaceioh
_syssync
HASH_FAIL
__author__
__copyright__
__license__
_sysdeldirty
_sysexit
_sysflush
_syspictory
_syspictoryh
_sysreplaceio
_sysreplaceioh
_syssync

Classes

diff --git a/eric-revpimodio2.api b/eric-revpimodio2.api index bc83c7f..28da249 100644 --- a/eric-revpimodio2.api +++ b/eric-revpimodio2.api @@ -185,6 +185,7 @@ revpimodio2.modio.RevPiModIO.writeprocimg?4(device=None) revpimodio2.modio.RevPiModIO?1(autorefresh=False, monitoring=False, syncoutputs=True, procimg=None, configrsc=None, simulator=False, debug=False, replace_io_file=None, direct_output=False) revpimodio2.modio.RevPiModIODriver?1(virtdev, autorefresh=False, monitoring=False, syncoutputs=True, procimg=None, configrsc=None, debug=False, replace_io_file=None, direct_output=False) revpimodio2.modio.RevPiModIOSelected?1(deviceselection, autorefresh=False, monitoring=False, syncoutputs=True, procimg=None, configrsc=None, simulator=False, debug=False, replace_io_file=None, direct_output=False) +revpimodio2.netio.HASH_FAIL?7 revpimodio2.netio.NetFH._connect?5() revpimodio2.netio.NetFH._direct_send?5(send_bytes, recv_count) revpimodio2.netio.NetFH.clear_dirtybytes?4(position=None) diff --git a/revpimodio2/modio.py b/revpimodio2/modio.py index f21a5e3..a87a661 100644 --- a/revpimodio2/modio.py +++ b/revpimodio2/modio.py @@ -359,10 +359,12 @@ class RevPiModIO(object): try: self.io[parentio].replace_io(name=io, **dict_replace) except Exception as e: - raise RuntimeError( - "replace_io_file: can not replace '{0}' with '{1}' " - "| RevPiModIO message: {2}".format(parentio, io, e) - ) + # NOTE: Bei Selected/Driver kann nicht geprüft werden + if len(self._lst_devselect) == 0: + raise RuntimeError( + "replace_io_file: can not replace '{0}' with '{1}' " + "| RevPiModIO message: {2}".format(parentio, io, e) + ) def _create_myfh(self): """Erstellt FileObject mit Pfad zum procimg. diff --git a/revpimodio2/netio.py b/revpimodio2/netio.py index 1c9eeb7..0040168 100644 --- a/revpimodio2/netio.py +++ b/revpimodio2/netio.py @@ -28,6 +28,8 @@ _sysreplaceio = b'\x01RP\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17' _sysreplaceioh = b'\x01RH\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17' # Übertragene Bytes schreiben _sysflush = b'\x01SD\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x17' +# Hashvalues +HASH_FAIL = b'\xff' * 16 class AclException(Exception): @@ -452,6 +454,11 @@ class NetFH(Thread): if self.__sockend.is_set(): raise ValueError("read of closed file") + if self.__replace_ios_h == HASH_FAIL: + raise RuntimeError( + "replace_io_file: could not read/parse over network" + ) + with self.__socklock: self._slavesock.send(_sysreplaceio)