Mit der Klasse RevPiModIODriver kann das python3-revpimodio Modul verwendet werden um einfach einen Treiber für die virtuellen Geräte auf dem RevPi zu schreiben.
Die eigentliche Programmierung der Steuerung kann z.B. über logiCAD gemacht werden. Wenn man für sein Programm weitere Daten benötigt, die von anderen Quellen kommen, verwendet man „Virtuelle Devices“. Diese werden aus logiCAD genau wie echte Hardware behandelt.
In unserem Beispiel sammeln wir Daten vom RevolutionPi und schreiben diese in virtuelle Devices. Dabei handelt es sich um die Systemzeit in UTC, die prozentuale Festplattenbelegung und die CPU-Temperatur.
Natürlich ist es auch möglich mit logiCAD Daten zu schreiben und diese dann mit dem Python Programm auszuwerten.
Wir legen ein virtuelles Device an, welches die Positionsnummer 64 erhält.
In dem Python Programm wird die Klasse instanziiert:
(Bei RevPiModIODriver sind alle Funktionen und Klassen genau wie bei RevPiModIO verfügbar.)
self.rpi = revpimodio2.RevPiModIODriver(64)
Als nächstes müssen lediglich ein paar Bytes zu Datenfeldern verbunden werden. Für den Timestamp z.B. 4 Bytes, in denen wir einen int() Wert speichern.
(Beachtet werden muss hier: Für unser Python Programm sind die Outputs die Inputs aus Sicht von logiCad – und andersherum! Wir sind ja schließlich der Treiber – bzw. die Hardware 😀 )
self.rpi.io.Input_1_i09.replace_io("timestamp", "L")
Wir verwenden hier die struct-Bibliothek von Python für die Bestimmung des Datentyps und der Bytelänge – „L“ steht für 4 Byte int() ohne Vorzeichen
Als letzten Schritt müssen wir nur noch einen Wert, den wir mit dem Python Programm zyklisch erstellen, in unseren neuen Output „timestamp“ schreiben:
self.rpi.io.timestamp.value = int(time.time())
Wenn das Programm läuft, ist der timestamp (in unserem Fall) als little-endian verfügbar (Input_1_i09 – Input_4_i09):
Oder, mit den richtigen Datentypen in logiCAD: