Fehler bei Devicesuche über Namen oder Position in setdefaultvalues,

syncoutputs, writeprocimg
cycletools: ton, tof, tp auch ohne c nutzbar mit Angabe in Millisekunden
This commit is contained in:
2017-09-03 06:58:55 +02:00
parent 12cc626f41
commit dde382e308
4 changed files with 183 additions and 14 deletions

View File

@@ -82,21 +82,39 @@ Methods</h3>
<td><a style="color:#0000FF" href="#Cycletools._docycle">_docycle</a></td>
<td>Zyklusarbeiten.</td>
</tr><tr>
<td><a style="color:#0000FF" href="#Cycletools.get_tof">get_tof</a></td>
<td>Wert der Ausschaltverzoegerung.</td>
</tr><tr>
<td><a style="color:#0000FF" href="#Cycletools.get_tofc">get_tofc</a></td>
<td>Wert der Ausschaltverzoegerung.</td>
</tr><tr>
<td><a style="color:#0000FF" href="#Cycletools.get_ton">get_ton</a></td>
<td>Einschaltverzoegerung.</td>
</tr><tr>
<td><a style="color:#0000FF" href="#Cycletools.get_tonc">get_tonc</a></td>
<td>Einschaltverzoegerung.</td>
</tr><tr>
<td><a style="color:#0000FF" href="#Cycletools.get_tp">get_tp</a></td>
<td>Impulstimer.</td>
</tr><tr>
<td><a style="color:#0000FF" href="#Cycletools.get_tpc">get_tpc</a></td>
<td>Impulstimer.</td>
</tr><tr>
<td><a style="color:#0000FF" href="#Cycletools.set_tof">set_tof</a></td>
<td>Startet bei Aufruf einen ausschaltverzoegerten Timer.</td>
</tr><tr>
<td><a style="color:#0000FF" href="#Cycletools.set_tofc">set_tofc</a></td>
<td>Startet bei Aufruf einen ausschaltverzoegerten Timer.</td>
</tr><tr>
<td><a style="color:#0000FF" href="#Cycletools.set_ton">set_ton</a></td>
<td>Startet einen einschaltverzoegerten Timer.</td>
</tr><tr>
<td><a style="color:#0000FF" href="#Cycletools.set_tonc">set_tonc</a></td>
<td>Startet einen einschaltverzoegerten Timer.</td>
</tr><tr>
<td><a style="color:#0000FF" href="#Cycletools.set_tp">set_tp</a></td>
<td>Startet einen Impuls Timer.</td>
</tr><tr>
<td><a style="color:#0000FF" href="#Cycletools.set_tpc">set_tpc</a></td>
<td>Startet einen Impuls Timer.</td>
</tr>
@@ -109,7 +127,7 @@ Static Methods</h3>
<a NAME="Cycletools.__init__" ID="Cycletools.__init__"></a>
<h3 style="background-color:#FFFFFF;color:#FF0000">
Cycletools (Constructor)</h3>
<b>Cycletools</b>(<i></i>)
<b>Cycletools</b>(<i>cycletime</i>)
<p>
Init Cycletools class.
</p><a NAME="Cycletools._docycle" ID="Cycletools._docycle"></a>
@@ -118,7 +136,23 @@ Cycletools._docycle</h3>
<b>_docycle</b>(<i></i>)
<p>
Zyklusarbeiten.
</p><a NAME="Cycletools.get_tofc" ID="Cycletools.get_tofc"></a>
</p><a NAME="Cycletools.get_tof" ID="Cycletools.get_tof"></a>
<h3 style="background-color:#FFFFFF;color:#FF0000">
Cycletools.get_tof</h3>
<b>get_tof</b>(<i>name</i>)
<p>
Wert der Ausschaltverzoegerung.
</p><dl>
<dt><i>name</i></dt>
<dd>
Eindeutiger Name des Timers
</dd>
</dl><dl>
<dt>Returns:</dt>
<dd>
Wert <class 'bool'> der Ausschaltverzoegerung
</dd>
</dl><a NAME="Cycletools.get_tofc" ID="Cycletools.get_tofc"></a>
<h3 style="background-color:#FFFFFF;color:#FF0000">
Cycletools.get_tofc</h3>
<b>get_tofc</b>(<i>name</i>)
@@ -132,7 +166,23 @@ Eindeutiger Name des Timers
</dl><dl>
<dt>Returns:</dt>
<dd>
Wert der Ausschaltverzoegerung
Wert <class 'bool'> der Ausschaltverzoegerung
</dd>
</dl><a NAME="Cycletools.get_ton" ID="Cycletools.get_ton"></a>
<h3 style="background-color:#FFFFFF;color:#FF0000">
Cycletools.get_ton</h3>
<b>get_ton</b>(<i>name</i>)
<p>
Einschaltverzoegerung.
</p><dl>
<dt><i>name</i></dt>
<dd>
Eindeutiger Name des Timers
</dd>
</dl><dl>
<dt>Returns:</dt>
<dd>
Wert <class 'bool'> der Einschaltverzoegerung
</dd>
</dl><a NAME="Cycletools.get_tonc" ID="Cycletools.get_tonc"></a>
<h3 style="background-color:#FFFFFF;color:#FF0000">
@@ -148,7 +198,23 @@ Eindeutiger Name des Timers
</dl><dl>
<dt>Returns:</dt>
<dd>
Wert der Einschaltverzoegerung
Wert <class 'bool'> der Einschaltverzoegerung
</dd>
</dl><a NAME="Cycletools.get_tp" ID="Cycletools.get_tp"></a>
<h3 style="background-color:#FFFFFF;color:#FF0000">
Cycletools.get_tp</h3>
<b>get_tp</b>(<i>name</i>)
<p>
Impulstimer.
</p><dl>
<dt><i>name</i></dt>
<dd>
Eindeutiger Name des Timers
</dd>
</dl><dl>
<dt>Returns:</dt>
<dd>
Wert <class 'bool'> des Impulses
</dd>
</dl><a NAME="Cycletools.get_tpc" ID="Cycletools.get_tpc"></a>
<h3 style="background-color:#FFFFFF;color:#FF0000">
@@ -164,7 +230,21 @@ Eindeutiger Name des Timers
</dl><dl>
<dt>Returns:</dt>
<dd>
Wert der des Impulses
Wert <class 'bool'> des Impulses
</dd>
</dl><a NAME="Cycletools.set_tof" ID="Cycletools.set_tof"></a>
<h3 style="background-color:#FFFFFF;color:#FF0000">
Cycletools.set_tof</h3>
<b>set_tof</b>(<i>name, milliseconds</i>)
<p>
Startet bei Aufruf einen ausschaltverzoegerten Timer.
</p><dl>
<dt><i>name</i></dt>
<dd>
Eindeutiger Name fuer Zugriff auf Timer
</dd><dt><i>milliseconds</i></dt>
<dd>
Verzoegerung in Millisekunden
</dd>
</dl><a NAME="Cycletools.set_tofc" ID="Cycletools.set_tofc"></a>
<h3 style="background-color:#FFFFFF;color:#FF0000">
@@ -180,6 +260,20 @@ Eindeutiger Name fuer Zugriff auf Timer
<dd>
Zyklusanzahl, der Verzoegerung wenn nicht neu gestartet
</dd>
</dl><a NAME="Cycletools.set_ton" ID="Cycletools.set_ton"></a>
<h3 style="background-color:#FFFFFF;color:#FF0000">
Cycletools.set_ton</h3>
<b>set_ton</b>(<i>name, milliseconds</i>)
<p>
Startet einen einschaltverzoegerten Timer.
</p><dl>
<dt><i>name</i></dt>
<dd>
Eindeutiger Name fuer Zugriff auf Timer
</dd><dt><i>milliseconds</i></dt>
<dd>
Millisekunden, der Verzoegerung wenn neu gestartet
</dd>
</dl><a NAME="Cycletools.set_tonc" ID="Cycletools.set_tonc"></a>
<h3 style="background-color:#FFFFFF;color:#FF0000">
Cycletools.set_tonc</h3>
@@ -194,6 +288,20 @@ Eindeutiger Name fuer Zugriff auf Timer
<dd>
Zyklusanzahl, der Verzoegerung wenn neu gestartet
</dd>
</dl><a NAME="Cycletools.set_tp" ID="Cycletools.set_tp"></a>
<h3 style="background-color:#FFFFFF;color:#FF0000">
Cycletools.set_tp</h3>
<b>set_tp</b>(<i>name, milliseconds</i>)
<p>
Startet einen Impuls Timer.
</p><dl>
<dt><i>name</i></dt>
<dd>
Eindeutiger Name fuer Zugriff auf Timer
</dd><dt><i>milliseconds</i></dt>
<dd>
Millisekunden, die der Impuls anstehen soll
</dd>
</dl><a NAME="Cycletools.set_tpc" ID="Cycletools.set_tpc"></a>
<h3 style="background-color:#FFFFFF;color:#FF0000">
Cycletools.set_tpc</h3>

View File

@@ -51,13 +51,19 @@ revpimodio2.device.Gateway.get_rawbytes?4()
revpimodio2.device.Gateway?1(parent, dict_device, simulator=False)
revpimodio2.device.Virtual.writeinputdefaults?4()
revpimodio2.helper.Cycletools._docycle?5()
revpimodio2.helper.Cycletools.get_tof?4(name)
revpimodio2.helper.Cycletools.get_tofc?4(name)
revpimodio2.helper.Cycletools.get_ton?4(name)
revpimodio2.helper.Cycletools.get_tonc?4(name)
revpimodio2.helper.Cycletools.get_tp?4(name)
revpimodio2.helper.Cycletools.get_tpc?4(name)
revpimodio2.helper.Cycletools.set_tof?4(name, milliseconds)
revpimodio2.helper.Cycletools.set_tofc?4(name, cycles)
revpimodio2.helper.Cycletools.set_ton?4(name, milliseconds)
revpimodio2.helper.Cycletools.set_tonc?4(name, cycles)
revpimodio2.helper.Cycletools.set_tp?4(name, milliseconds)
revpimodio2.helper.Cycletools.set_tpc?4(name, cycles)
revpimodio2.helper.Cycletools?1()
revpimodio2.helper.Cycletools?1(cycletime)
revpimodio2.helper.EventCallback.run?4()
revpimodio2.helper.EventCallback.stop?4()
revpimodio2.helper.EventCallback?1(func, name, value)

View File

@@ -7,6 +7,7 @@
#
"""RevPiModIO Helperklassen und Tools."""
import warnings
from math import ceil
from threading import Event, Lock, Thread
from timeit import default_timer
@@ -84,9 +85,10 @@ class Cycletools():
"""
def __init__(self):
def __init__(self, cycletime):
"""Init Cycletools class."""
self.__cycle = 0
self.__cycletime = cycletime
self.__ucycle = 0
self.__dict_ton = {}
self.__dict_tof = {}
@@ -160,12 +162,27 @@ class Cycletools():
self.flag5c = not self.flag5c
self.__cycle = 0
def get_tof(self, name):
"""Wert der Ausschaltverzoegerung.
@param name Eindeutiger Name des Timers
@return Wert <class 'bool'> der Ausschaltverzoegerung"""
return self.__dict_tof.get(name, 0) > 0
def get_tofc(self, name):
"""Wert der Ausschaltverzoegerung.
@param name Eindeutiger Name des Timers
@return Wert der Ausschaltverzoegerung"""
@return Wert <class 'bool'> der Ausschaltverzoegerung"""
return self.__dict_tof.get(name, 0) > 0
def set_tof(self, name, milliseconds):
"""Startet bei Aufruf einen ausschaltverzoegerten Timer.
@param name Eindeutiger Name fuer Zugriff auf Timer
@param milliseconds Verzoegerung in Millisekunden
"""
self.__dict_tof[name] = ceil(milliseconds / self.__cycletime)
def set_tofc(self, name, cycles):
"""Startet bei Aufruf einen ausschaltverzoegerten Timer.
@@ -175,12 +192,31 @@ class Cycletools():
"""
self.__dict_tof[name] = cycles
def get_ton(self, name):
"""Einschaltverzoegerung.
@param name Eindeutiger Name des Timers
@return Wert <class 'bool'> der Einschaltverzoegerung"""
return self.__dict_ton.get(name, [-1])[0] == 0
def get_tonc(self, name):
"""Einschaltverzoegerung.
@param name Eindeutiger Name des Timers
@return Wert der Einschaltverzoegerung"""
@return Wert <class 'bool'> der Einschaltverzoegerung"""
return self.__dict_ton.get(name, [-1])[0] == 0
def set_ton(self, name, milliseconds):
"""Startet einen einschaltverzoegerten Timer.
@param name Eindeutiger Name fuer Zugriff auf Timer
@param milliseconds Millisekunden, der Verzoegerung wenn neu gestartet
"""
if self.__dict_ton.get(name, [-1])[0] == -1:
self.__dict_ton[name] = \
[ceil(milliseconds / self.__cycletime), True]
else:
self.__dict_ton[name][1] = True
def set_tonc(self, name, cycles):
"""Startet einen einschaltverzoegerten Timer.
@@ -193,12 +229,31 @@ class Cycletools():
else:
self.__dict_ton[name][1] = True
def get_tp(self, name):
"""Impulstimer.
@param name Eindeutiger Name des Timers
@return Wert <class 'bool'> des Impulses"""
return self.__dict_tp.get(name, [-1])[0] > 0
def get_tpc(self, name):
"""Impulstimer.
@param name Eindeutiger Name des Timers
@return Wert der des Impulses"""
@return Wert <class 'bool'> des Impulses"""
return self.__dict_tp.get(name, [-1])[0] > 0
def set_tp(self, name, milliseconds):
"""Startet einen Impuls Timer.
@param name Eindeutiger Name fuer Zugriff auf Timer
@param milliseconds Millisekunden, die der Impuls anstehen soll
"""
if self.__dict_tp.get(name, [-1])[0] == -1:
self.__dict_tp[name] = \
[ceil(milliseconds / self.__cycletime), True]
else:
self.__dict_tp[name][1] = True
def set_tpc(self, name, cycles):
"""Startet einen Impuls Timer.

View File

@@ -364,7 +364,7 @@ class RevPiModIO(object):
# Cycleloop starten
self._looprunning = True
cycleinfo = helpermodule.Cycletools()
cycleinfo = helpermodule.Cycletools(self._imgwriter.refresh)
ec = None
while ec is None and not self._exit.is_set():
# Auf neue Daten warten und nur ausführen wenn set()
@@ -708,7 +708,7 @@ class RevPiModIO(object):
mylist = self.device
else:
dev = device if issubclass(type(device), devicemodule.Device) \
else self.__getitem__(device)
else self.device.__getitem__(device)
mylist = [dev]
for dev in mylist:
@@ -728,7 +728,7 @@ class RevPiModIO(object):
mylist = self.device
else:
dev = device if issubclass(type(device), devicemodule.Device) \
else self.__getitem__(device)
else self.device.__getitem__(device)
if dev._selfupdate:
raise RuntimeError(
@@ -771,7 +771,7 @@ class RevPiModIO(object):
mylist = self.device
else:
dev = device if issubclass(type(device), devicemodule.Device) \
else self.__getitem__(device)
else self.device.__getitem__(device)
if dev._selfupdate:
raise RuntimeError(