Events aus Modulen erstellen

Hallo zusammen,

es ist ja sicherlich möglich Events aus einem Modul zu erstellen, also wenn sich Variable X ändert, dann mache bitte das und das…

In der Doku habe ich dazu leider nichts gefunden, vielleicht bin ich auch blind. :smiley:
Hat evtl. jemand ein Beispiel dafür?

Grüße,
Kai

Du willst keine Events :smiley:
Du willst RegisterMessage und MessageSink benutzen, schau mal in das NoTrigger Modul von mir.
Michael

Ich finds immer gut, das du weißt was ich will. :smiley:
Danke, schaue ich mir mal an, ist ja wieder sehr sehr mächtig. :slight_smile:

Grüße,
Kai

Wenn du in das ‚Single‘ schaust, ist es nicht so mächtig.

Du nutzt dass um dich auf VM_Updates zu registrieren ( VM_UPDATE = 10603

$this->RegisterMessage($this->ReadPropertyInteger('VarID'), VM_UPDATE);

Und kannst dann im MessageSink auswerten:

public function MessageSink($TimeStamp, $SenderID, $Message, $Data)
    {
        switch ($Message)
        {
            case VM_UPDATE:
                if ($SenderID != $this->ReadPropertyInteger('VarID'))
                    break;
                 // $Data[0] Neuer Wert
                 // $Data[1] true/false ob Änderung oder Aktualisierung.
                 // $Data[2] Alter Wert
                break;
        }
    }

Zum testen sollte dies reichen :slight_smile:

Wichtig ist, dass du die Variablen-ID irgendwie (SetBuffer) merkst, damit wenn der User die Variable umkonfiguriert, du auch die alte VarID mit Unregistermessage wieder rauswirfst.
Ebenso wäre auch VM_DELETE nicht verkehrt, wenn die Variable gelöscht wurde.

Michael

Hallo Michael,

danke für das Beispiel, aber ich hatte es auch schon hinbekommen. :smiley:
Das mit dem Unregister ist gar nicht so verkehrt. Gibt es in der Konsole irgendwo eine Übersicht, was alles registriert ist?

Grüße,
Kai

Nö…
Soll auch nicht. Der Sinn ist ja, dass der User da nicht rumspielt :wink:
Michael

Hallo Michael,

ich meinte aber im Fall, wenn man das mit dem Unregister noch nicht drin hatte, damit ich weiß was ich evtl. nochmal „löschen“ muss.

Grüße,
Kai

Hallo Michael,

ich frage mich nur wie ich mitbekomme, dass die Variable umkonfiguriert wird.

Mit VM_DELETE erkenne ich ja wenn eine gelöscht wird, dann kann ich ja an der Stelle unregisterMessage aufrufen, aber das mit dem umkonfigurieren, da hänge ich noch ein wenig fest.

Grüße,
Kai

?
Einfach in ApplyChanges immer erst unregister mit der alten ID aufrufen (Buffer) und dann neu registrieren.
Ob sie dann gleich oder anders ist, ist ja egal :slight_smile:
Michael

Meine komplizierte Denkweise legt mir auch jedes mal wieder Steine in den Weg, ein wunder das ich noch nicht drüber gefallen bin. :smiley:

Danke! :banghead:

Grüße,
Kai

Das geht mir aber häufig auch so… :smiley:
Michael

Hallo Michael,

da der Buffer ja nur so lange gültig ist bis IPS neugestartet wird, oder evtl. mal abstürzt, was passiert denn dann?
Wir bei einem Neustart von IPs die Registrierung sowieso aufgehoben?

Grüße,
Kai

Jup.

Michael