Selected / Driver gegen nun einen DeviceNotFoundError aus, wenn nicht vorhanden

debug und replace_io_file über Namen abrufbar
This commit is contained in:
2019-07-23 09:09:34 +02:00
parent 56945d607e
commit 40d7c132a5
7 changed files with 99 additions and 15 deletions

View File

@@ -27,7 +27,10 @@ Global Attributes</h3>
<h3 style="background-color:#FFFFFF;color:#FF0000"> <h3 style="background-color:#FFFFFF;color:#FF0000">
Classes</h3> Classes</h3>
<table> <table>
<tr><td>None</td></tr> <tr>
<td><a style="color:#0000FF" href="#DeviceNotFoundError">DeviceNotFoundError</a></td>
<td>Fehler wenn ein Device nicht gefunden wird.</td>
</tr>
</table> </table>
<h3 style="background-color:#FFFFFF;color:#FF0000"> <h3 style="background-color:#FFFFFF;color:#FF0000">
Functions</h3> Functions</h3>
@@ -41,6 +44,37 @@ Functions</h3>
</tr> </tr>
</table> </table>
<hr /><hr /> <hr /><hr />
<a NAME="DeviceNotFoundError" ID="DeviceNotFoundError"></a>
<h2 style="background-color:#FFFFFF;color:#0000FF">DeviceNotFoundError</h2>
<p>
Fehler wenn ein Device nicht gefunden wird.
</p>
<h3 style="background-color:#FFFFFF;color:#FF0000">
Derived from</h3>
Exception
<h3 style="background-color:#FFFFFF;color:#FF0000">
Class Attributes</h3>
<table>
<tr><td>None</td></tr>
</table>
<h3 style="background-color:#FFFFFF;color:#FF0000">
Class Methods</h3>
<table>
<tr><td>None</td></tr>
</table>
<h3 style="background-color:#FFFFFF;color:#FF0000">
Methods</h3>
<table>
<tr><td>None</td></tr>
</table>
<h3 style="background-color:#FFFFFF;color:#FF0000">
Static Methods</h3>
<table>
<tr><td>None</td></tr>
</table>
<div align="right"><a style="color:#0000FF" href="#top">Up</a></div>
<hr /><hr />
<a NAME="acheck" ID="acheck"></a> <a NAME="acheck" ID="acheck"></a>
<h2 style="background-color:#FFFFFF;color:#0000FF">acheck</h2> <h2 style="background-color:#FFFFFF;color:#0000FF">acheck</h2>
<b>acheck</b>(<i>check_type, **kwargs</i>) <b>acheck</b>(<i>check_type, **kwargs</i>)

View File

@@ -54,7 +54,7 @@ object
<h3 style="background-color:#FFFFFF;color:#FF0000"> <h3 style="background-color:#FFFFFF;color:#FF0000">
Class Attributes</h3> Class Attributes</h3>
<table> <table>
<tr><td>__slots__</td></tr><tr><td>configrsc</td></tr><tr><td>cycletime</td></tr><tr><td>ioerrors</td></tr><tr><td>length</td></tr><tr><td>maxioerrors</td></tr><tr><td>monitoring</td></tr><tr><td>procimg</td></tr><tr><td>simulator</td></tr> <tr><td>__slots__</td></tr><tr><td>configrsc</td></tr><tr><td>cycletime</td></tr><tr><td>debug</td></tr><tr><td>ioerrors</td></tr><tr><td>length</td></tr><tr><td>maxioerrors</td></tr><tr><td>monitoring</td></tr><tr><td>procimg</td></tr><tr><td>replace_io_file</td></tr><tr><td>simulator</td></tr>
</table> </table>
<h3 style="background-color:#FFFFFF;color:#FF0000"> <h3 style="background-color:#FFFFFF;color:#FF0000">
Class Methods</h3> Class Methods</h3>
@@ -89,6 +89,9 @@ Methods</h3>
<td><a style="color:#0000FF" href="#RevPiModIO._get_cycletime">_get_cycletime</a></td> <td><a style="color:#0000FF" href="#RevPiModIO._get_cycletime">_get_cycletime</a></td>
<td>Gibt Aktualisierungsrate in ms der Prozessabbildsynchronisierung aus.</td> <td>Gibt Aktualisierungsrate in ms der Prozessabbildsynchronisierung aus.</td>
</tr><tr> </tr><tr>
<td><a style="color:#0000FF" href="#RevPiModIO._get_debug">_get_debug</a></td>
<td>Gibt Status des Debugflags zurueck.</td>
</tr><tr>
<td><a style="color:#0000FF" href="#RevPiModIO._get_ioerrors">_get_ioerrors</a></td> <td><a style="color:#0000FF" href="#RevPiModIO._get_ioerrors">_get_ioerrors</a></td>
<td>Getter function.</td> <td>Getter function.</td>
</tr><tr> </tr><tr>
@@ -104,6 +107,9 @@ Methods</h3>
<td><a style="color:#0000FF" href="#RevPiModIO._get_procimg">_get_procimg</a></td> <td><a style="color:#0000FF" href="#RevPiModIO._get_procimg">_get_procimg</a></td>
<td>Getter function.</td> <td>Getter function.</td>
</tr><tr> </tr><tr>
<td><a style="color:#0000FF" href="#RevPiModIO._get_replace_io_file">_get_replace_io_file</a></td>
<td>Gibt Pfad zur verwendeten replace IO Datei aus.</td>
</tr><tr>
<td><a style="color:#0000FF" href="#RevPiModIO._get_simulator">_get_simulator</a></td> <td><a style="color:#0000FF" href="#RevPiModIO._get_simulator">_get_simulator</a></td>
<td>Getter function.</td> <td>Getter function.</td>
</tr><tr> </tr><tr>
@@ -260,6 +266,17 @@ Gibt Aktualisierungsrate in ms der Prozessabbildsynchronisierung aus.
<dd> <dd>
Millisekunden Millisekunden
</dd> </dd>
</dl><a NAME="RevPiModIO._get_debug" ID="RevPiModIO._get_debug"></a>
<h3 style="background-color:#FFFFFF;color:#FF0000">
RevPiModIO._get_debug</h3>
<b>_get_debug</b>(<i></i>)
<p>
Gibt Status des Debugflags zurueck.
</p><dl>
<dt>Returns:</dt>
<dd>
Status des Debugflags
</dd>
</dl><a NAME="RevPiModIO._get_ioerrors" ID="RevPiModIO._get_ioerrors"></a> </dl><a NAME="RevPiModIO._get_ioerrors" ID="RevPiModIO._get_ioerrors"></a>
<h3 style="background-color:#FFFFFF;color:#FF0000"> <h3 style="background-color:#FFFFFF;color:#FF0000">
RevPiModIO._get_ioerrors</h3> RevPiModIO._get_ioerrors</h3>
@@ -315,6 +332,17 @@ Getter function.
<dd> <dd>
Pfad des verwendeten Prozessabbilds Pfad des verwendeten Prozessabbilds
</dd> </dd>
</dl><a NAME="RevPiModIO._get_replace_io_file" ID="RevPiModIO._get_replace_io_file"></a>
<h3 style="background-color:#FFFFFF;color:#FF0000">
RevPiModIO._get_replace_io_file</h3>
<b>_get_replace_io_file</b>(<i></i>)
<p>
Gibt Pfad zur verwendeten replace IO Datei aus.
</p><dl>
<dt>Returns:</dt>
<dd>
Pfad zur replace IO Datei
</dd>
</dl><a NAME="RevPiModIO._get_simulator" ID="RevPiModIO._get_simulator"></a> </dl><a NAME="RevPiModIO._get_simulator" ID="RevPiModIO._get_simulator"></a>
<h3 style="background-color:#FFFFFF;color:#FF0000"> <h3 style="background-color:#FFFFFF;color:#FF0000">
RevPiModIO._get_simulator</h3> RevPiModIO._get_simulator</h3>

View File

@@ -145,11 +145,13 @@ revpimodio2.modio.RevPiModIO._configure_replace_io?5()
revpimodio2.modio.RevPiModIO._create_myfh?5() revpimodio2.modio.RevPiModIO._create_myfh?5()
revpimodio2.modio.RevPiModIO._get_configrsc?5() revpimodio2.modio.RevPiModIO._get_configrsc?5()
revpimodio2.modio.RevPiModIO._get_cycletime?5() revpimodio2.modio.RevPiModIO._get_cycletime?5()
revpimodio2.modio.RevPiModIO._get_debug?5()
revpimodio2.modio.RevPiModIO._get_ioerrors?5() revpimodio2.modio.RevPiModIO._get_ioerrors?5()
revpimodio2.modio.RevPiModIO._get_length?5() revpimodio2.modio.RevPiModIO._get_length?5()
revpimodio2.modio.RevPiModIO._get_maxioerrors?5() revpimodio2.modio.RevPiModIO._get_maxioerrors?5()
revpimodio2.modio.RevPiModIO._get_monitoring?5() revpimodio2.modio.RevPiModIO._get_monitoring?5()
revpimodio2.modio.RevPiModIO._get_procimg?5() revpimodio2.modio.RevPiModIO._get_procimg?5()
revpimodio2.modio.RevPiModIO._get_replace_io_file?5()
revpimodio2.modio.RevPiModIO._get_simulator?5() revpimodio2.modio.RevPiModIO._get_simulator?5()
revpimodio2.modio.RevPiModIO._gotioerror?5(action, e=None) revpimodio2.modio.RevPiModIO._gotioerror?5(action, e=None)
revpimodio2.modio.RevPiModIO._set_cycletime?5(milliseconds) revpimodio2.modio.RevPiModIO._set_cycletime?5(milliseconds)
@@ -159,6 +161,7 @@ revpimodio2.modio.RevPiModIO.cleanup?4()
revpimodio2.modio.RevPiModIO.configrsc?7 revpimodio2.modio.RevPiModIO.configrsc?7
revpimodio2.modio.RevPiModIO.cycleloop?4(func, cycletime=50) revpimodio2.modio.RevPiModIO.cycleloop?4(func, cycletime=50)
revpimodio2.modio.RevPiModIO.cycletime?7 revpimodio2.modio.RevPiModIO.cycletime?7
revpimodio2.modio.RevPiModIO.debug?7
revpimodio2.modio.RevPiModIO.exit?4(full=True) revpimodio2.modio.RevPiModIO.exit?4(full=True)
revpimodio2.modio.RevPiModIO.export_replaced_ios?4(filename) revpimodio2.modio.RevPiModIO.export_replaced_ios?4(filename)
revpimodio2.modio.RevPiModIO.get_jconfigrsc?4() revpimodio2.modio.RevPiModIO.get_jconfigrsc?4()
@@ -170,6 +173,7 @@ revpimodio2.modio.RevPiModIO.maxioerrors?7
revpimodio2.modio.RevPiModIO.monitoring?7 revpimodio2.modio.RevPiModIO.monitoring?7
revpimodio2.modio.RevPiModIO.procimg?7 revpimodio2.modio.RevPiModIO.procimg?7
revpimodio2.modio.RevPiModIO.readprocimg?4(device=None) revpimodio2.modio.RevPiModIO.readprocimg?4(device=None)
revpimodio2.modio.RevPiModIO.replace_io_file?7
revpimodio2.modio.RevPiModIO.resetioerrors?4() revpimodio2.modio.RevPiModIO.resetioerrors?4()
revpimodio2.modio.RevPiModIO.setdefaultvalues?4(device=None) revpimodio2.modio.RevPiModIO.setdefaultvalues?4(device=None)
revpimodio2.modio.RevPiModIO.simulator?7 revpimodio2.modio.RevPiModIO.simulator?7

View File

@@ -1,6 +1,7 @@
Base Device Base Device
Connect Core Connect Core
Core Base Core Base
DeviceNotFoundError Exception
DioModule Device DioModule Device
EventCallback Thread EventCallback Thread
Gateway Device Gateway Device

View File

@@ -38,6 +38,13 @@ MEM = 302
warnings.simplefilter(action="always") warnings.simplefilter(action="always")
class DeviceNotFoundError(Exception):
"""Fehler wenn ein Device nicht gefunden wird."""
pass
def acheck(check_type, **kwargs): def acheck(check_type, **kwargs):
"""Check type of given arguments. """Check type of given arguments.

View File

@@ -10,7 +10,7 @@ from json import load as jload
from multiprocessing import cpu_count from multiprocessing import cpu_count
from os import access, F_OK, R_OK from os import access, F_OK, R_OK
from queue import Empty from queue import Empty
from revpimodio2 import acheck from revpimodio2 import acheck, DeviceNotFoundError
from signal import signal, SIG_DFL, SIGINT, SIGTERM from signal import signal, SIG_DFL, SIGINT, SIGTERM
from threading import Thread, Event, Lock from threading import Thread, Event, Lock
from timeit import default_timer from timeit import default_timer
@@ -368,9 +368,7 @@ class RevPiModIO(object):
except Exception as e: except Exception as e:
raise RuntimeError( raise RuntimeError(
"replace_io_file: can not replace '{0}' with '{1}' " "replace_io_file: can not replace '{0}' with '{1}' "
"| RevPiModIO message: {2}".format( "| RevPiModIO message: {2}".format(parentio, io, e)
parentio, io, e
)
) )
def _create_myfh(self): def _create_myfh(self):
@@ -389,6 +387,11 @@ class RevPiModIO(object):
@return Millisekunden""" @return Millisekunden"""
return self._imgwriter.refresh return self._imgwriter.refresh
def _get_debug(self):
"""Gibt Status des Debugflags zurueck.
@return Status des Debugflags"""
return self._debug
def _get_ioerrors(self): def _get_ioerrors(self):
"""Getter function. """Getter function.
@return Aktuelle Anzahl gezaehlter Fehler""" @return Aktuelle Anzahl gezaehlter Fehler"""
@@ -417,6 +420,11 @@ class RevPiModIO(object):
@return Pfad des verwendeten Prozessabbilds""" @return Pfad des verwendeten Prozessabbilds"""
return self._procimg return self._procimg
def _get_replace_io_file(self):
"""Gibt Pfad zur verwendeten replace IO Datei aus.
@return Pfad zur replace IO Datei"""
return self._replace_io_file
def _get_simulator(self): def _get_simulator(self):
"""Getter function. """Getter function.
@return True, wenn als Simulator gestartet""" @return True, wenn als Simulator gestartet"""
@@ -992,6 +1000,7 @@ class RevPiModIO(object):
return workokay return workokay
debug = property(_get_debug)
configrsc = property(_get_configrsc) configrsc = property(_get_configrsc)
cycletime = property(_get_cycletime, _set_cycletime) cycletime = property(_get_cycletime, _set_cycletime)
ioerrors = property(_get_ioerrors) ioerrors = property(_get_ioerrors)
@@ -999,6 +1008,7 @@ class RevPiModIO(object):
maxioerrors = property(_get_maxioerrors, _set_maxioerrors) maxioerrors = property(_get_maxioerrors, _set_maxioerrors)
monitoring = property(_get_monitoring) monitoring = property(_get_monitoring)
procimg = property(_get_procimg) procimg = property(_get_procimg)
replace_io_file = property(_get_replace_io_file)
simulator = property(_get_simulator) simulator = property(_get_simulator)
@@ -1052,20 +1062,20 @@ class RevPiModIOSelected(RevPiModIO):
if len(self.device) == 0: if len(self.device) == 0:
if type(self) == RevPiModIODriver: if type(self) == RevPiModIODriver:
raise RuntimeError( raise DeviceNotFoundError(
"could not find any given VIRTUAL devices in config" "could not find any given VIRTUAL devices in config"
) )
else: else:
raise RuntimeError( raise DeviceNotFoundError(
"could not find any given devices in config" "could not find any given devices in config"
) )
elif len(self.device) != len(self._lst_devselect): elif len(self.device) != len(self._lst_devselect):
if type(self) == RevPiModIODriver: if type(self) == RevPiModIODriver:
raise RuntimeError( raise DeviceNotFoundError(
"could not find all given VIRTUAL devices in config" "could not find all given VIRTUAL devices in config"
) )
else: else:
raise RuntimeError( raise DeviceNotFoundError(
"could not find all given devices in config" "could not find all given devices in config"
) )

View File

@@ -3,11 +3,11 @@
__author__ = "Sven Sager" __author__ = "Sven Sager"
__copyright__ = "Copyright (C) 2018 Sven Sager" __copyright__ = "Copyright (C) 2018 Sven Sager"
__license__ = "LGPLv3" __license__ = "LGPLv3"
import socket import socket
import warnings import warnings
from json import loads as jloads from json import loads as jloads
from re import compile from re import compile
from revpimodio2 import DeviceNotFoundError
from threading import Thread, Event, Lock from threading import Thread, Event, Lock
from .device import Device from .device import Device
@@ -696,20 +696,20 @@ class RevPiNetIOSelected(RevPiNetIO):
if len(self.device) == 0: if len(self.device) == 0:
if type(self) == RevPiNetIODriver: if type(self) == RevPiNetIODriver:
raise RuntimeError( raise DeviceNotFoundError(
"could not find any given VIRTUAL devices in config" "could not find any given VIRTUAL devices in config"
) )
else: else:
raise RuntimeError( raise DeviceNotFoundError(
"could not find any given devices in config" "could not find any given devices in config"
) )
elif len(self.device) != len(self._lst_devselect): elif len(self.device) != len(self._lst_devselect):
if type(self) == RevPiNetIODriver: if type(self) == RevPiNetIODriver:
raise RuntimeError( raise DeviceNotFoundError(
"could not find all given VIRTUAL devices in config" "could not find all given VIRTUAL devices in config"
) )
else: else:
raise RuntimeError( raise DeviceNotFoundError(
"could not find all given devices in config" "could not find all given devices in config"
) )