mirror of
https://github.com/naruxde/revpimodio2.git
synced 2025-11-08 13:53:53 +01:00
Mit default zusammenführen
This commit is contained in:
@@ -26,9 +26,6 @@ Classes</h3>
|
|||||||
</tr><tr>
|
</tr><tr>
|
||||||
<td><a style="color:#0000FF" href="#ProcimgWriter">ProcimgWriter</a></td>
|
<td><a style="color:#0000FF" href="#ProcimgWriter">ProcimgWriter</a></td>
|
||||||
<td>Klasse fuer Synchroniseriungs-Thread.</td>
|
<td>Klasse fuer Synchroniseriungs-Thread.</td>
|
||||||
</tr><tr>
|
|
||||||
<td><a style="color:#0000FF" href="#Var">Var</a></td>
|
|
||||||
<td></td>
|
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||||
@@ -68,7 +65,7 @@ None
|
|||||||
<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>None</td></tr>
|
||||||
</table>
|
</table>
|
||||||
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||||
Class Methods</h3>
|
Class Methods</h3>
|
||||||
@@ -354,7 +351,7 @@ Thread
|
|||||||
<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>None</td></tr>
|
||||||
</table>
|
</table>
|
||||||
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||||
Class Methods</h3>
|
Class Methods</h3>
|
||||||
@@ -429,7 +426,7 @@ Thread
|
|||||||
<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>ioerrors</td></tr><tr><td>maxioerrors</td></tr><tr><td>refresh</td></tr>
|
<tr><td>ioerrors</td></tr><tr><td>maxioerrors</td></tr><tr><td>refresh</td></tr>
|
||||||
</table>
|
</table>
|
||||||
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||||
Class Methods</h3>
|
Class Methods</h3>
|
||||||
@@ -516,6 +513,11 @@ Aktiviert oder Deaktiviert die Eventueberwachung.
|
|||||||
<dd>
|
<dd>
|
||||||
True aktiviert / False deaktiviert
|
True aktiviert / False deaktiviert
|
||||||
</dd>
|
</dd>
|
||||||
|
</dl><dl>
|
||||||
|
<dt>Returns:</dt>
|
||||||
|
<dd>
|
||||||
|
True, wenn Anforderung erfolgreich war
|
||||||
|
</dd>
|
||||||
</dl><a NAME="ProcimgWriter._get_ioerrors" ID="ProcimgWriter._get_ioerrors"></a>
|
</dl><a NAME="ProcimgWriter._get_ioerrors" ID="ProcimgWriter._get_ioerrors"></a>
|
||||||
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||||
ProcimgWriter._get_ioerrors</h3>
|
ProcimgWriter._get_ioerrors</h3>
|
||||||
@@ -590,35 +592,6 @@ ProcimgWriter.stop</h3>
|
|||||||
<p>
|
<p>
|
||||||
Beendet die automatische Prozessabbildsynchronisierung.
|
Beendet die automatische Prozessabbildsynchronisierung.
|
||||||
</p>
|
</p>
|
||||||
<div align="right"><a style="color:#0000FF" href="#top">Up</a></div>
|
|
||||||
<hr /><hr />
|
|
||||||
<a NAME="Var" ID="Var"></a>
|
|
||||||
<h2 style="background-color:#FFFFFF;color:#0000FF">Var</h2>
|
|
||||||
|
|
||||||
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
|
||||||
Derived from</h3>
|
|
||||||
None
|
|
||||||
<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>
|
<div align="right"><a style="color:#0000FF" href="#top">Up</a></div>
|
||||||
<hr />
|
<hr />
|
||||||
</body></html>
|
</body></html>
|
||||||
@@ -299,9 +299,8 @@ class Device(object):
|
|||||||
self._modio.readprocimg(self)
|
self._modio.readprocimg(self)
|
||||||
|
|
||||||
# Datenkopie anlegen
|
# Datenkopie anlegen
|
||||||
self._filelock.acquire()
|
with self._filelock:
|
||||||
self._ba_datacp = self._ba_devdata[:]
|
self._ba_datacp = self._ba_devdata[:]
|
||||||
self._filelock.release()
|
|
||||||
|
|
||||||
self._selfupdate = True
|
self._selfupdate = True
|
||||||
|
|
||||||
|
|||||||
@@ -400,10 +400,16 @@ class ProcimgWriter(Thread):
|
|||||||
|
|
||||||
def _collect_events(self, value):
|
def _collect_events(self, value):
|
||||||
"""Aktiviert oder Deaktiviert die Eventueberwachung.
|
"""Aktiviert oder Deaktiviert die Eventueberwachung.
|
||||||
@param value True aktiviert / False deaktiviert"""
|
@param value True aktiviert / False deaktiviert
|
||||||
|
@return True, wenn Anforderung erfolgreich war"""
|
||||||
if type(value) != bool:
|
if type(value) != bool:
|
||||||
raise ValueError("value must be <class 'bool'>")
|
raise ValueError("value must be <class 'bool'>")
|
||||||
|
|
||||||
|
# Nur starten, wenn System läuft
|
||||||
|
if not self.is_alive():
|
||||||
|
self.__eventwork = False
|
||||||
|
return False
|
||||||
|
|
||||||
if self.__eventwork != value:
|
if self.__eventwork != value:
|
||||||
with self.lck_refresh:
|
with self.lck_refresh:
|
||||||
self.__eventwork = value
|
self.__eventwork = value
|
||||||
@@ -417,6 +423,8 @@ class ProcimgWriter(Thread):
|
|||||||
self.__eventth.daemon = True
|
self.__eventth.daemon = True
|
||||||
self.__eventth.start()
|
self.__eventth.start()
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
def _get_ioerrors(self):
|
def _get_ioerrors(self):
|
||||||
"""Ruft aktuelle Anzahl der Fehler ab.
|
"""Ruft aktuelle Anzahl der Fehler ab.
|
||||||
@return Aktuelle Fehleranzahl"""
|
@return Aktuelle Fehleranzahl"""
|
||||||
@@ -472,13 +480,13 @@ class ProcimgWriter(Thread):
|
|||||||
if self._modio._monitoring:
|
if self._modio._monitoring:
|
||||||
# Inputs und Outputs in Puffer
|
# Inputs und Outputs in Puffer
|
||||||
for dev in self._modio._lst_refresh:
|
for dev in self._modio._lst_refresh:
|
||||||
dev._filelock.acquire()
|
with dev._filelock:
|
||||||
dev._ba_devdata[:] = bytesbuff[dev._slc_devoff]
|
dev._ba_devdata[:] = bytesbuff[dev._slc_devoff]
|
||||||
if self.__eventwork \
|
if self.__eventwork \
|
||||||
and len(dev._dict_events) > 0 \
|
and len(dev._dict_events) > 0 \
|
||||||
and dev._ba_datacp != dev._ba_devdata:
|
and dev._ba_datacp != dev._ba_devdata:
|
||||||
self.__check_change(dev)
|
self.__check_change(dev)
|
||||||
dev._filelock.release()
|
|
||||||
else:
|
else:
|
||||||
# Inputs in Puffer, Outputs in Prozessabbild
|
# Inputs in Puffer, Outputs in Prozessabbild
|
||||||
for dev in self._modio._lst_refresh:
|
for dev in self._modio._lst_refresh:
|
||||||
@@ -509,7 +517,7 @@ class ProcimgWriter(Thread):
|
|||||||
finally:
|
finally:
|
||||||
# Verzögerte Events prüfen
|
# Verzögerte Events prüfen
|
||||||
if self.__eventwork:
|
if self.__eventwork:
|
||||||
for tup_fire in list(self.__dict_delay.keys()):
|
for tup_fire in tuple(self.__dict_delay.keys()):
|
||||||
if tup_fire[0].overwrite and \
|
if tup_fire[0].overwrite and \
|
||||||
getattr(self._modio.io, tup_fire[1]).value != \
|
getattr(self._modio.io, tup_fire[1]).value != \
|
||||||
tup_fire[2]:
|
tup_fire[2]:
|
||||||
|
|||||||
@@ -385,8 +385,9 @@ class IOBase(object):
|
|||||||
)
|
)
|
||||||
|
|
||||||
if self not in self._parentdevice._dict_events:
|
if self not in self._parentdevice._dict_events:
|
||||||
self._parentdevice._dict_events[self] = \
|
with self._parentdevice._filelock:
|
||||||
[IOEvent(func, edge, as_thread, delay, overwrite)]
|
self._parentdevice._dict_events[self] = \
|
||||||
|
[IOEvent(func, edge, as_thread, delay, overwrite)]
|
||||||
else:
|
else:
|
||||||
# Prüfen ob Funktion schon registriert ist
|
# Prüfen ob Funktion schon registriert ist
|
||||||
for regfunc in self._parentdevice._dict_events[self]:
|
for regfunc in self._parentdevice._dict_events[self]:
|
||||||
@@ -418,9 +419,10 @@ class IOBase(object):
|
|||||||
)
|
)
|
||||||
|
|
||||||
# Eventfunktion einfügen
|
# Eventfunktion einfügen
|
||||||
self._parentdevice._dict_events[self].append(
|
with self._parentdevice._filelock:
|
||||||
IOEvent(func, edge, as_thread, delay, overwrite)
|
self._parentdevice._dict_events[self].append(
|
||||||
)
|
IOEvent(func, edge, as_thread, delay, overwrite)
|
||||||
|
)
|
||||||
|
|
||||||
def _get_address(self):
|
def _get_address(self):
|
||||||
"""Gibt die absolute Byteadresse im Prozessabbild zurueck.
|
"""Gibt die absolute Byteadresse im Prozessabbild zurueck.
|
||||||
@@ -627,7 +629,8 @@ class IOBase(object):
|
|||||||
"""
|
"""
|
||||||
if self in self._parentdevice._dict_events:
|
if self in self._parentdevice._dict_events:
|
||||||
if func is None:
|
if func is None:
|
||||||
del self._parentdevice._dict_events[self]
|
with self._parentdevice._filelock:
|
||||||
|
del self._parentdevice._dict_events[self]
|
||||||
else:
|
else:
|
||||||
newlist = []
|
newlist = []
|
||||||
for regfunc in self._parentdevice._dict_events[self]:
|
for regfunc in self._parentdevice._dict_events[self]:
|
||||||
@@ -637,10 +640,11 @@ class IOBase(object):
|
|||||||
newlist.append(regfunc)
|
newlist.append(regfunc)
|
||||||
|
|
||||||
# Wenn Funktionen übrig bleiben, diese übernehmen
|
# Wenn Funktionen übrig bleiben, diese übernehmen
|
||||||
if len(newlist) > 0:
|
with self._parentdevice._filelock:
|
||||||
self._parentdevice._dict_events[self] = newlist
|
if len(newlist) > 0:
|
||||||
else:
|
self._parentdevice._dict_events[self] = newlist
|
||||||
del self._parentdevice._dict_events[self]
|
else:
|
||||||
|
del self._parentdevice._dict_events[self]
|
||||||
|
|
||||||
def wait(self, edge=BOTH, exitevent=None, okvalue=None, timeout=0):
|
def wait(self, edge=BOTH, exitevent=None, okvalue=None, timeout=0):
|
||||||
"""Wartet auf Wertaenderung eines IOs.
|
"""Wartet auf Wertaenderung eines IOs.
|
||||||
|
|||||||
@@ -319,7 +319,7 @@ class RevPiModIO(object):
|
|||||||
@param milliseconds <class 'int'> in Millisekunden"""
|
@param milliseconds <class 'int'> in Millisekunden"""
|
||||||
if self._looprunning:
|
if self._looprunning:
|
||||||
raise RuntimeError(
|
raise RuntimeError(
|
||||||
"can not change cycletime when cycleloop or mainloop are "
|
"can not change cycletime when cycleloop or mainloop is "
|
||||||
"running"
|
"running"
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
@@ -587,9 +587,8 @@ class RevPiModIO(object):
|
|||||||
|
|
||||||
# Beim Eintritt in mainloop Bytecopy erstellen
|
# Beim Eintritt in mainloop Bytecopy erstellen
|
||||||
for dev in self._lst_refresh:
|
for dev in self._lst_refresh:
|
||||||
dev._filelock.acquire()
|
with dev._filelock:
|
||||||
dev._ba_datacp = dev._ba_devdata[:]
|
dev._ba_datacp = dev._ba_devdata[:]
|
||||||
dev._filelock.release()
|
|
||||||
|
|
||||||
# ImgWriter mit Eventüberwachung aktivieren
|
# ImgWriter mit Eventüberwachung aktivieren
|
||||||
self._imgwriter._collect_events(True)
|
self._imgwriter._collect_events(True)
|
||||||
|
|||||||
Reference in New Issue
Block a user