diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..a5114a4
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,118 @@
+# ---> Python
+# Byte-compiled / optimized / DLL files
+__pycache__/
+*.py[cod]
+*$py.class
+
+# C extensions
+*.so
+
+# Distribution / packaging
+.Python
+build/
+develop-eggs/
+dist/
+downloads/
+eggs/
+.eggs/
+lib/
+lib64/
+parts/
+sdist/
+var/
+wheels/
+*.egg-info/
+.installed.cfg
+*.egg
+MANIFEST
+
+# PyInstaller
+# Usually these files are written by a python script from a template
+# before PyInstaller builds the exe, so as to inject date/other infos into it.
+*.manifest
+*.spec
+
+# Installer logs
+pip-log.txt
+pip-delete-this-directory.txt
+
+# Unit test / coverage reports
+htmlcov/
+.tox/
+.nox/
+.coverage
+.coverage.*
+.cache
+nosetests.xml
+coverage.xml
+*.cover
+.hypothesis/
+.pytest_cache/
+
+# Translations
+*.mo
+*.pot
+
+# Django stuff:
+*.log
+local_settings.py
+db.sqlite3
+
+# Flask stuff:
+instance/
+.webassets-cache
+
+# Scrapy stuff:
+.scrapy
+
+# Sphinx documentation
+docs/_build/
+
+# PyBuilder
+target/
+
+# Jupyter Notebook
+.ipynb_checkpoints
+
+# IPython
+profile_default/
+ipython_config.py
+
+# pyenv
+.python-version
+
+# celery beat schedule file
+celerybeat-schedule
+
+# SageMath parsed files
+*.sage.py
+
+# Environments
+.env
+.venv
+env/
+venv/
+ENV/
+env.bak/
+venv.bak/
+
+# Spyder project settings
+.spyderproject
+.spyproject
+
+# Rope project settings
+.ropeproject
+
+# mkdocs documentation
+/site
+
+# mypy
+.mypy_cache/
+.dmypy.json
+dmypy.json
+
+# Pyre type checker
+.pyre/
+
+/test/
+/make.conf
diff --git a/.hgignore b/.hgignore
deleted file mode 100644
index daf4e13..0000000
--- a/.hgignore
+++ /dev/null
@@ -1,23 +0,0 @@
-glob:.eric6project
-glob:_eric6project
-glob:.eric5project
-glob:_eric5project
-glob:.eric4project
-glob:_eric4project
-glob:.ropeproject
-glob:_ropeproject
-glob:.directory
-glob:**.pyc
-glob:**.pyo
-glob:**.orig
-glob:**.bak
-glob:**.rej
-glob:**~
-glob:cur
-glob:tmp
-glob:__pycache__
-glob:**.DS_Store
-syntax: glob
-test/*
-deb/*
-dist/*
diff --git a/.idea/$CACHE_FILE$ b/.idea/$CACHE_FILE$
new file mode 100644
index 0000000..3a1e22c
--- /dev/null
+++ b/.idea/$CACHE_FILE$
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+ Angular
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..5c98b42
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,2 @@
+# Default ignored files
+/workspace.xml
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml
new file mode 100644
index 0000000..105ce2d
--- /dev/null
+++ b/.idea/inspectionProfiles/profiles_settings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..3999087
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..bedb953
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/revpimodio2.iml b/.idea/revpimodio2.iml
new file mode 100644
index 0000000..c8efcbb
--- /dev/null
+++ b/.idea/revpimodio2.iml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/index-revpimodio2.html b/doc/index-revpimodio2.html
deleted file mode 100644
index f3bc051..0000000
--- a/doc/index-revpimodio2.html
+++ /dev/null
@@ -1,53 +0,0 @@
-
-
-revpimodio2
-
-
-
-
-revpimodio2
-
-Stellt alle Klassen fuer den RevolutionPi zur Verfuegung.
-
-Webpage: https://revpimodio.org/
-
-Stellt Klassen fuer die einfache Verwendung des Revolution Pis der
-Kunbus GmbH (https://revolution.kunbus.de/) zur Verfuegung. Alle I/Os werden
-aus der piCtory Konfiguration eingelesen und mit deren Namen direkt zugreifbar
-gemacht. Fuer Gateways sind eigene IOs ueber mehrere Bytes konfigurierbar
-Mit den definierten Namen greift man direkt auf die gewuenschten Daten zu.
-Auf alle IOs kann der Benutzer Funktionen als Events registrieren. Diese
-fuehrt das Modul bei Datenaenderung aus.
-
Stellt alle Klassen fuer den RevolutionPi zur Verfuegung.
-
-
-
-
\ No newline at end of file
diff --git a/doc/revpimodio2.__init__.html b/doc/revpimodio2.__init__.html
deleted file mode 100644
index 1554d3c..0000000
--- a/doc/revpimodio2.__init__.html
+++ /dev/null
@@ -1,116 +0,0 @@
-
-
-revpimodio2.__init__
-
-
-
-
-revpimodio2.__init__
-
-Stellt alle Klassen fuer den RevolutionPi zur Verfuegung.
-
-Webpage: https://revpimodio.org/
-
-Stellt Klassen fuer die einfache Verwendung des Revolution Pis der
-Kunbus GmbH (https://revolution.kunbus.de/) zur Verfuegung. Alle I/Os werden
-aus der piCtory Konfiguration eingelesen und mit deren Namen direkt zugreifbar
-gemacht. Fuer Gateways sind eigene IOs ueber mehrere Bytes konfigurierbar
-Mit den definierten Namen greift man direkt auf die gewuenschten Daten zu.
-Auf alle IOs kann der Benutzer Funktionen als Events registrieren. Diese
-fuehrt das Modul bei Datenaenderung aus.
-
-WD Ausgang alle 10 Sekunden automatisch toggeln.
-
-
-Connect._devconfigure
-_devconfigure()
-
-Connect-Klasse vorbereiten.
-
-
-Connect._get_leda3
-_get_leda3()
-
-Gibt den Zustand der LED A3 vom Connect zurueck.
-
-
Returns:
-
-0=aus, 1=gruen, 2=rot
-
-
-
-Connect._get_wdtoggle
-_get_wdtoggle()
-
-Ruft den Wert fuer Autowatchdog ab.
-
-
Returns:
-
-True, wenn Autowatchdog aktiv ist
-
-
-
-Connect._set_leda3
-_set_leda3(value)
-
-Setzt den Zustand der LED A3 vom Connect.
-
-
value
-
-0=aus, 1=gruen, 2=rot
-
-
-
-Connect._set_wdtoggle
-_set_wdtoggle(value)
-
-Setzt den Wert fuer Autowatchdog.
-
- Wird dieser Wert auf True gesetzt, wechselt im Hintergrund das noetige
- Bit zum toggeln des Watchdogs alle 10 Sekunden zwichen True und False.
- Dieses Bit wird bei autorefresh=True natuerlich automatisch in das
- Prozessabbild geschrieben.
-
- WICHTIG: Sollte autorefresh=False sein, muss zyklisch
- .writeprocimg() aufgerufen werden, um den Wert in das
- Prozessabbild zu schreiben!!!
-
- Die Basisfunktionalitaet generiert bei Instantiierung alle IOs und
- erweitert den Prozessabbildpuffer um die benoetigten Bytes. Sie verwaltet
- ihren Prozessabbildpuffer und sorgt fuer die Aktualisierung der IO-Werte.
-
-Laedt das Modul als Simulator und vertauscht IOs
-
-
-
-Device.__bytes__
-__bytes__()
-
-Gibt alle Daten des Devices als zurueck.
-
-
Returns:
-
-Devicedaten als
-
-
-
-Device.__contains__
-__contains__(key)
-
-Prueft ob IO auf diesem Device liegt.
-
-
key
-
-IO-Name / IO-Bytenummer
-
-
-
Returns:
-
-True, wenn IO auf Device vorhanden
-
-
-
-Device.__getioiter
-__getioiter(ioslc, export)
-
-Gibt mit allen IOs zurueck.
-
-
ioslc
-
-IO Abschnitt
-
export
-
-Filter fuer 'Export' Flag in piCtory
-
-
-
Returns:
-
-IOs als Iterator
-
-
-
-Device.__getitem__
-__getitem__(key)
-
-Gibt IO an angegebener Stelle zurueck.
-
-
key
-
-Index des IOs auf dem device als
-
-
-
Returns:
-
-Gefundenes IO-Objekt
-
-
-
-Device.__int__
-__int__()
-
-Gibt die Positon im RevPi Bus zurueck.
-
-
Returns:
-
-Positionsnummer
-
-
-
-Device.__iter__
-__iter__()
-
-Gibt Iterator aller IOs zurueck.
-
-
Returns:
-
- aller IOs
-
-
-
-Device.__len__
-__len__()
-
-Gibt Anzahl der Bytes zurueck, die dieses Device belegt.
-
-
Returns:
-
-
-
-
-
-Device.__str__
-__str__()
-
-Gibt den Namen des Devices zurueck.
-
-
Returns:
-
-Devicename
-
-
-
-Device._buildio
-_buildio(dict_io, iotype)
-
-Erstellt aus der piCtory-Liste die IOs fuer dieses Device.
-
-
dict_io
-
--Objekt aus piCtory Konfiguration
-
iotype
-
- Wert
-
-
-
Returns:
-
- mit Start und Stop Position dieser IOs
-
-
-
-Device._devconfigure
-_devconfigure()
-
-Funktion zum ueberschreiben von abgeleiteten Klassen.
-
-
-Device._get_offset
-_get_offset()
-
-Gibt den Deviceoffset im Prozessabbild zurueck.
-
-
Returns:
-
-Deviceoffset
-
-
-
-Device._get_producttype
-_get_producttype()
-
-Gibt den Produkttypen des device zurueck.
-
-
Returns:
-
-Deviceprodukttyp
-
-
-
-Device._update_my_io_list
-_update_my_io_list()
-
-Erzeugt eine neue IO Liste fuer schnellen Zugriff.
-
-
-Device.autorefresh
-autorefresh(activate=True)
-
-Registriert dieses Device fuer die automatische Synchronisierung.
-
-
activate
-
-Default True fuegt Device zur Synchronisierung hinzu
-
-
-
-Device.get_allios
-get_allios(export=None)
-
-Gibt eine Liste aller Inputs und Outputs zurueck, keine MEMs.
-
- Bleibt Parameter 'export' auf None werden alle Inputs und Outputs
- zurueckgegeben. Wird 'export' auf True/False gesetzt, werden nur Inputs
- und Outputs zurueckgegeben, bei denen der Wert 'Export' in piCtory
- uebereinstimmt.
-
-
export
-
-Nur In-/Outputs mit angegebenen 'Export' Wert in piCtory
-
-
-
Returns:
-
- Input und Output, keine MEMs
-
-
-
-Device.get_inputs
-get_inputs(export=None)
-
-Gibt eine Liste aller Inputs zurueck.
-
- Bleibt Parameter 'export' auf None werden alle Inputs zurueckgegeben.
- Wird 'export' auf True/False gesetzt, werden nur Inputs zurueckgegeben,
- bei denen der Wert 'Export' in piCtory uebereinstimmt.
-
-
export
-
-Nur Inputs mit angegebenen 'Export' Wert in piCtory
-
-
-
Returns:
-
- Inputs
-
-
-
-Device.get_memories
-get_memories(export=None)
-
-Gibt eine Liste aller Memoryobjekte zurueck.
-
- Bleibt Parameter 'export' auf None werden alle Mems zurueckgegeben.
- Wird 'export' auf True/False gesetzt, werden nur Mems zurueckgegeben,
- bei denen der Wert 'Export' in piCtory uebereinstimmt.
-
-
export
-
-Nur Mems mit angegebenen 'Export' Wert in piCtory
-
-
-
Returns:
-
- Mems
-
-
-
-Device.get_outputs
-get_outputs(export=None)
-
-Gibt eine Liste aller Outputs zurueck.
-
- Bleibt Parameter 'export' auf None werden alle Outputs zurueckgegeben.
- Wird 'export' auf True/False gesetzt, werden nur Outputs
- zurueckgegeben, bei denen der Wert 'Export' in piCtory uebereinstimmt.
-
-
export
-
-Nur Outputs mit angegebenen 'Export' Wert in piCtory
-
-
-
Returns:
-
- Outputs
-
-
-
-Device.readprocimg
-readprocimg()
-
-Alle Inputs fuer dieses Device vom Prozessabbild einlesen.
-
- Stellt neben den Funktionen von RevPiDevice weitere Funktionen fuer die
- Gateways bereit. IOs auf diesem Device stellen die replace_io Funktion
- zur verfuegung, ueber die eigene IOs definiert werden, die ein
- RevPiStructIO-Objekt abbilden.
- Dieser IO-Typ kann Werte ueber mehrere Bytes verarbeiten und zurueckgeben.
-
- Stellt die selben Funktionen wie Gateway zur Verfuegung. Es koennen
- ueber die reg_*-Funktionen eigene IOs definiert werden, die ein
- RevPiStructIO-Objekt abbilden.
- Dieser IO-Typ kann Werte ueber mehrere Bytes verarbeiten und zurueckgeben.
-
Schreibt fuer ein virtuelles Device piCtory Defaultinputwerte.
-
-
-
-Static Methods
-
-
None
-
-
-
-Virtual.writeinputdefaults
-writeinputdefaults()
-
-Schreibt fuer ein virtuelles Device piCtory Defaultinputwerte.
-
- Sollten in piCtory Defaultwerte fuer Inputs eines virtuellen Devices
- angegeben sein, werden diese nur beim Systemstart oder einem piControl
- Reset gesetzt. Sollte danach das Prozessabbild mit NULL ueberschrieben,
- gehen diese Werte verloren.
- Diese Funktion kann nur auf virtuelle Devices angewendet werden!
-
-
Returns:
-
-True, wenn Arbeiten am virtuellen Device erfolgreich waren
-
- Diese Klasse enthaelt Werkzeuge fuer Zyklusfunktionen, wie Taktmerker
- und Flankenmerker.
- Zu beachten ist, dass die Flankenmerker beim ersten Zyklus alle den Wert
- True haben! Ueber den Merker Cycletools.first kann ermittelt werden,
- ob es sich um den ersten Zyklus handelt.
-
- Taktmerker flag1c, flag5c, flag10c, usw. haben den als Zahl angegebenen
- Wert an Zyklen jeweils False und True.
- Beispiel: flag5c hat 5 Zyklen den Wert False und in den naechsten 5 Zyklen
- den Wert True.
-
- Flankenmerker flank5c, flank10c, usw. haben immer im, als Zahl angebenen
- Zyklus fuer einen Zyklusdurchlauf den Wert True, sonst False.
- Beispiel: flank5c hat immer alle 5 Zyklen den Wert True.
-
- Diese Merker koennen z.B. verwendet werden um, an Outputs angeschlossene,
- Lampen synchron blinken zu lassen.
-
-Thread fuer das interne Aufrufen von Event-Funktionen.
-
- Der Eventfunktion, welche dieser Thread aufruft, wird der Thread selber
- als Parameter uebergeben. Darauf muss bei der definition der Funktion
- geachtet werden z.B. "def event(th):". Bei umfangreichen Funktionen kann
- dieser ausgewertet werden um z.B. doppeltes Starten zu verhindern.
- Ueber EventCallback.ioname kann der Name des IO-Objekts abgerufen werden,
- welches das Event ausgeloest hast. EventCallback.iovalue gibt den Wert des
- IO-Objekts zum Ausloesezeitpunkt zurueck.
- Der Thread stellt das EventCallback.exit Event als Abbruchbedingung fuer
- die aufgerufene Funktion zur Verfuegung.
- Durch Aufruf der Funktion EventCallback.stop() wird das exit-Event gesetzt
- und kann bei Schleifen zum Abbrechen verwendet werden.
- Mit dem .exit() Event auch eine Wartefunktion realisiert
- werden: "th.exit.wait(0.5)" - Wartet 500ms oder bricht sofort ab, wenn
- fuer den Thread .stop() aufgerufen wird.
-
- while not th.exit.is_set():
- # IO-Arbeiten
- th.exit.wait(0.5)
-
- Diese Klasse wird als Thread gestartet, wenn das Prozessabbild zyklisch
- synchronisiert werden soll. Diese Funktion wird hauptsaechlich fuer das
- Event-Handling verwendet.
-
- Die Basisfunktionalitaet ermoeglicht das Lesen und Schreiben der Werte
- als oder . Dies entscheidet sich bei der
- Instantiierung.
- Wenn eine Bittadresse angegeben wird, werden -Werte erwartet
- und zurueckgegeben, ansonsten .
-
- Diese Klasse dient als Basis fuer andere IO-Klassen mit denen die Werte
- auch als verwendet werden koennen.
-
-Registriert fuer IO ein Event bei der Eventueberwachung.
-
- Die uebergebene Funktion wird ausgefuehrt, wenn sich der IO Wert
- aendert. Mit Angabe von optionalen Parametern kann das
- Ausloeseverhalten gesteuert werden.
-
- HINWEIS: Die delay-Zeit muss in die .cycletime passen, ist dies nicht
- der Fall, wird IMMER aufgerundet!
-
-
func
-
-Funktion die bei Aenderung aufgerufen werden soll
-
delay
-
-Verzoegerung in ms zum Ausloesen wenn Wert gleich bleibt
-
edge
-
-Ausfuehren bei RISING, FALLING or BOTH Wertaenderung
-
as_thread
-
-Bei True, Funktion als EventCallback-Thread ausfuehren
-
prefire
-
-Ausloesen mit aktuellem Wert, wenn mainloop startet
-
-Registriert fuer IO einen Timer, welcher nach delay func ausfuehrt.
-
- Der Timer wird gestartet, wenn sich der IO Wert aendert und fuehrt die
- uebergebene Funktion aus - auch wenn sich der IO Wert in der
- zwischenzeit geaendert hat. Sollte der Timer nicht abelaufen sein und
- die Bedingugn erneut zutreffen, wird der Timer NICHT auf den delay Wert
- zurueckgesetzt oder ein zweites Mal gestartet. Fuer dieses Verhalten
- kann .reg_event(..., delay=wert) verwendet werden.
-
- HINWEIS: Die delay-Zeit muss in die .cycletime passen, ist dies nicht
- der Fall, wird IMMER aufgerundet!
-
-
func
-
-Funktion die bei Aenderung aufgerufen werden soll
-
delay
-
-Verzoegerung in ms zum Ausloesen - auch bei Wertaenderung
-
edge
-
-Ausfuehren bei RISING, FALLING or BOTH Wertaenderung
-
as_thread
-
-Bei True, Funktion als EventCallback-Thread ausfuehren
-
-
-
-IOBase.set_value
-set_value(value)
-
-Setzt den Wert des IOs.
-
-
value
-
-IO-Wert als oder
-
-
-
-IOBase.unreg_event
-unreg_event(func=None, edge=None)
-
-Entfernt ein Event aus der Eventueberwachung.
-
-
func
-
-Nur Events mit angegebener Funktion
-
edge
-
-Nur Events mit angegebener Funktion und angegebener Edge
-
- Die Wertaenderung wird immer uerberprueft, wenn fuer Devices
- mit aktiviertem autorefresh neue Daten gelesen wurden.
-
- Bei Wertaenderung, wird das Warten mit 0 als Rueckgabewert beendet.
-
- HINWEIS: Wenn keine neuen Daten liefert, wird
- bis in die Ewigkeit gewartet (nicht bei Angabe von "timeout").
-
- Wenn edge mit RISING oder FALLING angegeben wird, muss diese Flanke
- ausgeloest werden. Sollte der Wert 1 sein beim Eintritt mit Flanke
- RISING, wird das Warten erst bei Aenderung von 0 auf 1 beendet.
-
- Als exitevent kann ein -Objekt uebergeben
- werden, welches das Warten bei is_set() sofort mit 1 als Rueckgabewert
- beendet.
-
- Wenn der Wert okvalue an dem IO fuer das Warten anliegt, wird
- das Warten sofort mit -1 als Rueckgabewert beendet.
-
- Der Timeoutwert bricht beim Erreichen das Warten sofort mit
- Wert 2 Rueckgabewert ab. (Das Timeout wird ueber die Zykluszeit
- der autorefresh Funktion berechnet, entspricht also nicht exakt den
- angegeben Millisekunden! Es wird immer nach oben gerundet!)
-
-
edge
-
-Flanke RISING, FALLING, BOTH die eintreten muss
-
exitevent
-
- fuer vorzeitiges Beenden
-
okvalue
-
-IO-Wert, bei dem das Warten sofort beendet wird
-
timeout
-
-Zeit in ms nach der abgebrochen wird
-
-
-
Returns:
-
- erfolgreich Werte <= 0
- - Erfolgreich gewartet
- Wert 0: IO hat den Wert gewechselt
- Wert -1: okvalue stimmte mit IO ueberein
- - Fehlerhaft gewartet
- Wert 1: exitevent wurde gesetzt
- Wert 2: timeout abgelaufen
- Wert 100: Devicelist.exit() wurde aufgerufen
-
Registriert neues IO Objekt unabhaenging von __setattr__.
-
-
-
-Static Methods
-
-
None
-
-
-
-IOList (Constructor)
-IOList()
-
-Init IOList class.
-
-
-IOList.__contains__
-__contains__(key)
-
-Prueft ob IO existiert.
-
-
key
-
-IO-Name oder Bytenummer
-
-
-
Returns:
-
-True, wenn IO vorhanden / Byte belegt
-
-
-
-IOList.__delattr__
-__delattr__(key)
-
-Entfernt angegebenen IO.
-
-
key
-
-IO zum entfernen
-
-
-
-IOList.__getattr__
-__getattr__(key)
-
-Verwaltet geloeschte IOs (Attribute, die nicht existieren).
-
-
key
-
-Name oder Byte eines alten IOs
-
-
-
Returns:
-
-Alten IO, wenn in Ref-Listen
-
-
-
-IOList.__getitem__
-__getitem__(key)
-
-Ruft angegebenen IO ab.
-
- Wenn der Key ist, wird ein einzelner IO geliefert. Wird
- der Key als uebergeben, wird eine
- geliefert mit 0, 1 oder 8 Eintraegen.
- Wird als Key gegeben, werden die Listen in einer Liste
- zurueckgegeben.
-
-
key
-
-IO Name als oder Byte als .
-
-
-
Returns:
-
-IO Objekt oder Liste der IOs
-
-
-
-IOList.__iter__
-__iter__()
-
-Gibt Iterator aller IOs zurueck.
-
-
Returns:
-
-Iterator aller IOs
-
-
-
-IOList.__len__
-__len__()
-
-Gibt die Anzahl aller IOs zurueck.
-
-
Returns:
-
-Anzahl aller IOs
-
-
-
-IOList.__private_replace_oldio_with_newio
-__private_replace_oldio_with_newio(io)
-
-Ersetzt bestehende IOs durch den neu Registrierten.
-
-
io
-
-Neuer IO der eingefuegt werden soll
-
-
-
-IOList.__setattr__
-__setattr__(key, value)
-
-Verbietet aus Leistungsguenden das direkte Setzen von Attributen.
-
-
-IOList._private_register_new_io_object
-_private_register_new_io_object(new_io)
-
-Registriert neues IO Objekt unabhaenging von __setattr__.
-
-Klasse fuer den Zugriff auf die Daten mit Konvertierung in int.
-
- Diese Klasse erweitert die Funktion von um Funktionen,
- ueber die mit Werten gearbeitet werden kann. Fuer die
- Umwandlung koennen 'Byteorder' (Default 'little') und 'signed' (Default
- False) als Parameter gesetzt werden.
-
- Wenn die kwargs fuer byteorder und defaultvalue nicht angegeben werden,
- uebernimmt das System die Daten aus dem ersetzten IO.
-
- Es darf nur ein einzelnes Formatzeichen 'frm' uebergeben werden. Daraus
- wird dann die benoetigte Laenge an Bytes berechnet und der Datentyp
- festgelegt. Moeglich sind:
- Bits / Bytes: ?, c, s
- Integer : bB, hH, iI, lL, qQ
- Float : e, f, d
-
- Eine Ausnahme ist die Formatierung 's'. Hier koennen mehrere Bytes
- zu einem langen IO zusammengefasst werden. Die Formatierung muss
- '8s' fuer z.B. 8 Bytes sein - NICHT 'ssssssss'!
-
- Wenn durch die Formatierung mehr Bytes benoetigt werden, als
- der urspruenglige IO hat, werden die nachfolgenden IOs ebenfalls
- verwendet und entfernt.
-
-
name
-
-Name des neuen Inputs
-
frm
-
-struct formatierung (1 Zeichen) oder 'ANZAHLs' z.B. '8s'
-
kwargs
-
-Weitere Parameter:
- - bmk: interne Bezeichnung fuer IO
- - bit: Registriert IO als am angegebenen Bit im Byte
- - byteorder: Byteorder fuer den IO, Standardwert=little
- - defaultvalue: Standardwert fuer IO
- - event: Funktion fuer Eventhandling registrieren
- - delay: Verzoegerung in ms zum Ausloesen wenn Wert gleich bleibt
- - edge: Event ausfuehren bei RISING, FALLING or BOTH Wertaenderung
- - as_thread: Fuehrt die event-Funktion als RevPiCallback-Thread aus
- - prefire: Ausloesen mit aktuellem Wert, wenn mainloop startet
-
-struct formatierung (1 Zeichen) oder 'ANZAHLs' z.B. '8s'
-
kwargs
-
-Weitere Parameter:
- - bmk: Bezeichnung fuer IO
- - bit: Registriert IO als am angegebenen Bit im Byte
- - byteorder: Byteorder fuer IO, Standardwert vom ersetzten IO
- - defaultvalue: Standardwert fuer IO, Standard vom ersetzten IO
-
-
-
-StructIO._get_frm
-_get_frm()
-
-Ruft die struct Formatierung ab.
-
-
Returns:
-
-struct Formatierung
-
-
-
-StructIO._get_signed
-_get_signed()
-
-Ruft ab, ob der Wert Vorzeichenbehaftet behandelt werden soll.
-
-
Returns:
-
-True, wenn Vorzeichenbehaftet
-
-
-
-StructIO.get_structdefaultvalue
-get_structdefaultvalue()
-
-Gibt die Defaultvalue mit struct Formatierung zurueck.
-
Klasse fuer die Verwaltung einzelner Devices aus piCtory.
-
-
-
-Functions
-
-
None
-
-
-
-
RevPiModIO
-
-Klasse fuer die Verwaltung der piCtory Konfiguration.
-
- Diese Klasse uebernimmt die gesamte Konfiguration aus piCtory und bilded
- die Devices und IOs ab. Sie uebernimmt die exklusive Verwaltung des
- Prozessabbilds und stellt sicher, dass die Daten synchron sind.
- Sollten nur einzelne Devices gesteuert werden, verwendet man
- RevPiModIOSelected() und uebergibt bei Instantiierung eine Liste mit
- Device Positionen oder Device Namen.
-
-Wenn True, alle Devices zu autorefresh hinzufuegen
-
monitoring
-
-In- und Outputs werden gelesen, niemals geschrieben
-
syncoutputs
-
-Aktuell gesetzte Outputs vom Prozessabbild einlesen
-
procimg
-
-Abweichender Pfad zum Prozessabbild
-
configrsc
-
-Abweichender Pfad zur piCtory Konfigurationsdatei
-
simulator
-
-Laedt das Modul als Simulator und vertauscht IOs
-
debug
-
-Gibt alle Warnungen inkl. Zyklusprobleme aus
-
replace_io_file
-
-Replace IO Konfiguration aus Datei laden
-
direct_output
-
-Write outputs immediately to process image (slow)
-
-
-
-RevPiModIO.__del__
-__del__()
-
-Zerstoert alle Klassen um aufzuraeumen.
-
-
-RevPiModIO.__evt_exit
-__evt_exit(signum, sigframe)
-
-Eventhandler fuer Programmende.
-
-
signum
-
-Signalnummer
-
sigframe
-
-Signalframe
-
-
-
-RevPiModIO._configure
-_configure(jconfigrsc)
-
-Verarbeitet die piCtory Konfigurationsdatei.
-
-
jconfigrsc:
-
-Data to build IOs as of JSON
-
-
-
-RevPiModIO._configure_replace_io
-_configure_replace_io(creplaceio)
-
-Importiert ersetzte IOs in diese Instanz.
-
- Importiert ersetzte IOs, welche vorher mit .export_replaced_ios(...)
- in eine Datei exportiert worden sind. Diese IOs werden in dieser
- Instanz wiederhergestellt.
-
-
ireplaceio:
-
-Data to replace ios as
-
-
-
-RevPiModIO._create_myfh
-_create_myfh()
-
-Erstellt FileObject mit Pfad zum procimg.
- return FileObject
-
-
-RevPiModIO._get_configrsc
-_get_configrsc()
-
-Getter function.
-
-
Returns:
-
-Pfad der verwendeten piCtory Konfiguration
-
-
-
-RevPiModIO._get_cpreplaceio
-_get_cpreplaceio()
-
-Laed die replace_io_file Konfiguration und verarbeitet sie.
-
-
Returns:
-
- der replace io daten
-
-
-
-RevPiModIO._get_cycletime
-_get_cycletime()
-
-Gibt Aktualisierungsrate in ms der Prozessabbildsynchronisierung aus.
-
-
Returns:
-
-Millisekunden
-
-
-
-RevPiModIO._get_debug
-_get_debug()
-
-Gibt Status des Debugflags zurueck.
-
-
Returns:
-
-Status des Debugflags
-
-
-
-RevPiModIO._get_ioerrors
-_get_ioerrors()
-
-Getter function.
-
-
Returns:
-
-Aktuelle Anzahl gezaehlter Fehler
-
-
-
-RevPiModIO._get_length
-_get_length()
-
-Getter function.
-
-
Returns:
-
-Laenge in Bytes der Devices
-
-
-
-RevPiModIO._get_maxioerrors
-_get_maxioerrors()
-
-Getter function.
-
-
Returns:
-
-Anzahl erlaubte Fehler
-
-
-
-RevPiModIO._get_monitoring
-_get_monitoring()
-
-Getter function.
-
-
Returns:
-
-True, wenn als Monitoring gestartet
-
-
-
-RevPiModIO._get_procimg
-_get_procimg()
-
-Getter function.
-
-
Returns:
-
-Pfad des verwendeten Prozessabbilds
-
-
-
-RevPiModIO._get_replace_io_file
-_get_replace_io_file()
-
-Gibt Pfad zur verwendeten replace IO Datei aus.
-
-
Returns:
-
-Pfad zur replace IO Datei
-
-
-
-RevPiModIO._get_simulator
-_get_simulator()
-
-Getter function.
-
-
Returns:
-
-True, wenn als Simulator gestartet
-
-
-
-RevPiModIO._gotioerror
-_gotioerror(action, e=None, show_warn=True)
-
-IOError Verwaltung fuer Prozessabbildzugriff.
-
-
action
-
-Zusatzinformationen zum loggen
-
e
-
-Exception to log if debug is enabled
-
show_warn
-
-Warnung anzeigen
-
-
-
-RevPiModIO._set_cycletime
-_set_cycletime(milliseconds)
-
-Setzt Aktualisierungsrate der Prozessabbild-Synchronisierung.
-
-
milliseconds
-
- in Millisekunden
-
-
-
-RevPiModIO._set_debug
-_set_debug(value)
-
-Setzt debugging Status um mehr Meldungen zu erhalten oder nicht.
-
-
value
-
-Wenn True, werden umfangreiche Medungen angezeigt
-
-
-
-RevPiModIO._set_maxioerrors
-_set_maxioerrors(value)
-
-Setzt Anzahl der maximal erlaubten Fehler bei Prozessabbildzugriff.
-
-
value
-
-Anzahl erlaubte Fehler
-
-
-
-RevPiModIO._simulate_ioctl
-_simulate_ioctl(request, arg=b'')
-
-Simuliert IOCTL Funktionen auf procimg Datei.
-
-
request
-
-IO Request
-
arg:
-
-Request argument
-
-
-
-RevPiModIO.autorefresh_all
-autorefresh_all()
-
-Setzt alle Devices in autorefresh Funktion.
-
-
-RevPiModIO.cleanup
-cleanup()
-
-Beendet autorefresh und alle Threads.
-
-
-RevPiModIO.cycleloop
-cycleloop(func, cycletime=50)
-
-Startet den Cycleloop.
-
- Der aktuelle Programmthread wird hier bis Aufruf von
- .exit() "gefangen". Er fuehrt nach jeder Aktualisierung
- des Prozessabbilds die uebergebene Funktion "func" aus und arbeitet sie
- ab. Waehrend der Ausfuehrung der Funktion wird das Prozessabbild nicht
- weiter aktualisiert. Die Inputs behalten bis zum Ende den aktuellen
- Wert. Gesetzte Outputs werden nach Ende des Funktionsdurchlaufs in das
- Prozessabbild geschrieben.
-
- Verlassen wird der Cycleloop, wenn die aufgerufene Funktion einen
- Rueckgabewert nicht gleich None liefert (z.B. return True), oder durch
- Aufruf von .exit().
-
- HINWEIS: Die Aktualisierungszeit und die Laufzeit der Funktion duerfen
- die eingestellte autorefresh Zeit, bzw. uebergebene cycletime nicht
- ueberschreiten!
-
- Ueber den Parameter cycletime wird die gewuenschte Zukluszeit der
- uebergebenen Funktion gesetzt. Der Standardwert betraegt
- 50 Millisekunden, in denen das Prozessabild eingelesen, die uebergebene
- Funktion ausgefuert und das Prozessabbild geschrieben wird.
-
-
func
-
-Funktion, die ausgefuehrt werden soll
-
cycletime
-
-Zykluszeit in Millisekunden - Standardwert 50 ms
-
-
-
Returns:
-
-None
-
-
-
-RevPiModIO.exit
-exit(full=True)
-
-Beendet mainloop() und optional autorefresh.
-
- Wenn sich das Programm im mainloop() befindet, wird durch Aufruf
- von exit() die Kontrolle wieder an das Hauptprogramm zurueckgegeben.
-
- Der Parameter full ist mit True vorbelegt und entfernt alle Devices aus
- dem autorefresh. Der Thread fuer die Prozessabbildsynchronisierung
- wird dann gestoppt und das Programm kann sauber beendet werden.
-
- Exportiert alle ersetzten IOs, welche mit .replace_io(...) angelegt
- wurden. Die Datei kann z.B. fuer RevPiPyLoad verwndet werden um Daten
- in den neuen Formaten per MQTT zu uebertragen oder mit RevPiPyControl
- anzusehen.
-
-
filename
-
-Dateiname fuer Exportdatei
-
-
-
-RevPiModIO.get_jconfigrsc
-get_jconfigrsc()
-
-Laedt die piCtory Konfiguration und erstellt ein .
-
-
Returns:
-
- der piCtory Konfiguration
-
-
-
-RevPiModIO.handlesignalend
-handlesignalend(cleanupfunc=None)
-
-Signalhandler fuer Programmende verwalten.
-
- Wird diese Funktion aufgerufen, uebernimmt RevPiModIO die SignalHandler
- fuer SIGINT und SIGTERM. Diese werden Empfangen, wenn das
- Betriebssystem oder der Benutzer das Steuerungsprogramm sauber beenden
- will.
-
- Die optionale Funktion "cleanupfunc" wird als letztes nach dem letzten
- Einlesen der Inputs ausgefuehrt. Dort gesetzte Outputs werden nach
- Ablauf der Funktion ein letztes Mal geschrieben.
- Gedacht ist dies fuer Aufraeumarbeiten, wie z.B. das abschalten der
- LEDs am RevPi-Core.
-
- Nach einmaligem Empfangen eines der Signale und dem Beenden der
- RevPiModIO Thrads / Funktionen werden die SignalHandler wieder
- freigegeben.
-
-
cleanupfunc
-
-Funktion wird nach dem letzten Lesen der Inputs
- ausgefuehrt, gefolgt vom letzten Schreiben der Outputs
-
-
-
-RevPiModIO.mainloop
-mainloop(blocking=True)
-
-Startet den Mainloop mit Eventueberwachung.
-
- Der aktuelle Programmthread wird hier bis Aufruf von
- RevPiDevicelist.exit() "gefangen" (es sei denn blocking=False). Er
- durchlaeuft die Eventueberwachung und prueft Aenderungen der, mit
- einem Event registrierten, IOs. Wird eine Veraenderung erkannt,
- fuert das Programm die dazugehoerigen Funktionen der Reihe nach aus.
-
- Wenn der Parameter "blocking" mit False angegeben wird, aktiviert
- dies die Eventueberwachung und blockiert das Programm NICHT an der
- Stelle des Aufrufs. Eignet sich gut fuer die GUI Programmierung, wenn
- Events vom RevPi benoetigt werden, aber das Programm weiter ausgefuehrt
- werden soll.
-
-
blocking
-
-Wenn False, blockiert das Programm hier NICHT
-
-
-
Returns:
-
-None
-
-
-
-RevPiModIO.readprocimg
-readprocimg(device=None)
-
-Einlesen aller Inputs aller/eines Devices vom Prozessabbild.
-
- Devices mit aktiverem autorefresh werden ausgenommen!
-
-
device
-
-nur auf einzelnes Device anwenden
-
-
-
Returns:
-
-True, wenn Arbeiten an allen Devices erfolgreich waren
-
-
-
-RevPiModIO.resetioerrors
-resetioerrors()
-
-Setzt aktuellen IOError-Zaehler auf 0 zurueck.
-
-
-RevPiModIO.setdefaultvalues
-setdefaultvalues(device=None)
-
-Alle Outputbuffer werden auf die piCtory default Werte gesetzt.
-
-
device
-
-nur auf einzelnes Device anwenden
-
-
-
-RevPiModIO.syncoutputs
-syncoutputs(device=None)
-
-Lesen aller aktuell gesetzten Outputs im Prozessabbild.
-
- Devices mit aktiverem autorefresh werden ausgenommen!
-
-
device
-
-nur auf einzelnes Device anwenden
-
-
-
Returns:
-
-True, wenn Arbeiten an allen Devices erfolgreich waren
-
-
-
-RevPiModIO.writeprocimg
-writeprocimg(device=None)
-
-Schreiben aller Outputs aller Devices ins Prozessabbild.
-
- Devices mit aktiverem autorefresh werden ausgenommen!
-
-
device
-
-nur auf einzelnes Device anwenden
-
-
-
Returns:
-
-True, wenn Arbeiten an allen Devices erfolgreich waren
-
-Klasse um eigene Treiber fuer die virtuellen Devices zu erstellen.
-
- Mit dieser Klasse werden nur angegebene Virtuelle Devices mit RevPiModIO
- verwaltet. Bei Instantiierung werden automatisch die Inputs und Outputs
- verdreht, um das Schreiben der Inputs zu ermoeglichen. Die Daten koennen
- dann ueber logiCAD an den Devices abgerufen werden.
-
-Klasse fuer die Verwaltung einzelner Devices aus piCtory.
-
- Diese Klasse uebernimmt nur angegebene Devices der piCtory Konfiguration
- und bilded sie inkl. IOs ab. Sie uebernimmt die exklusive Verwaltung des
- Adressbereichs im Prozessabbild an dem sich die angegebenen Devices
- befinden und stellt sicher, dass die Daten synchron sind.
-
- Dieses FileObject-like Object verwaltet das Lesen und Schriben des
- Prozessabbilds ueber das Netzwerk. Ein entfernter Revolution Pi kann
- so gesteuert werden.
-
-Klasse fuer die Verwaltung der piCtory Konfiguration ueber das Netzwerk.
-
- Diese Klasse uebernimmt die gesamte Konfiguration aus piCtory und bilded
- die Devices und IOs ab. Sie uebernimmt die exklusive Verwaltung des
- Prozessabbilds und stellt sicher, dass die Daten synchron sind.
- Sollten nur einzelne Devices gesteuert werden, verwendet man
- RevPiModIOSelected() und uebergibt bei Instantiierung eine Liste mit
- Device Positionen oder Device Namen.
-
-Klasse um eigene Treiber fuer die virtuellen Devices zu erstellen.
-
- Mit dieser Klasse werden nur angegebene Virtuelle Devices mit RevPiModIO
- verwaltet. Bei Instantiierung werden automatisch die Inputs und Outputs
- verdreht, um das Schreiben der Inputs zu ermoeglichen. Die Daten koennen
- dann ueber logiCAD an den Devices abgerufen werden.
-
-Klasse fuer die Verwaltung einzelner Devices aus piCtory.
-
- Diese Klasse uebernimmt nur angegebene Devices der piCtory Konfiguration
- und bilded sie inkl. IOs ab. Sie uebernimmt die exklusive Verwaltung des
- Adressbereichs im Prozessabbild an dem sich die angegebenen Devices
- befinden und stellt sicher, dass die Daten synchron sind.
-