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)