Hallo.
Ich hoffe ich bin hier in der richtigen Rubrik.
Ich versuche gerade mit Hilfe des OLE Automation Interfaces von VB.NET aus auf IP-Symcon zuzugreifen.
Leider finde ich weder in der Wiki, noch im Forum Infos zur OLE Schnittstelle.
Gibts es irgendwo eine Dokumentation zu den Befehlen oder ein paar Beispiele?
Ich hab jetzt einfach mal etwas rumprobiert, und es funktioniert eigentlich soweit ganz gut. Variablen setzen und abfragen, Skripte steuern, alles kein Problem, erkärt sich ja aus dem COM Objekt heraus weitgehend von selbst.
Nur beim registrieren von Events komme ich nicht weiter.
IPS.RegisterVariableEvent erwartet offenbar als Parameter den Namen der Variablen als String (kein Problem) und einen zweiten Parameter vom Type RVarEvent.
Rvarevent hat 3 Parameter:
.EventType
das ist klar, legt fest was auslöst
.Eventskript
ok, hier kann ich den Namen eines vorhandenen IP-Symcon scripts angeben, das klappt dann auch.
.EventTrigger
hier ist mein Problem. Ich nehme an das entweder .Eventskript oder .EventTrigger benutzt werden, evtl. geht auch beides, ist aber jetzt erst mal egal. .EventTrigger erwartet ein Object, und das wird dann wohl vom Event aufgerufen, aber was für eine Sorte Obejkt ist das? Welche Funktion muss dort vorhanden sein die dann aufgerufen werden kann?
Hat das schon mal wer unter .NET zum laufen bekommen (muss nicht VB.NET sein) und kann mir einen Tip geben?
Hier mal ein minimal Code der läuft (VB.NET 2005):
Dim ips As IPS.Environment
Dim tmp_event As New IPS.RVarEvent
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
ips = GetObject(, „IPS.Environment“)
tmp_event.EventScript = „Temparatur_anzeigen“ ’ ein vorhandenes IP-Sym script
tmp_event.EventType = Global.IPS.EVarEventTypes.evtOnChange
ips.RegisterVariableEvent(„GZ_TEMP_IST“, tmp_event)End Sub
und hier mein Problem:
Dim ips As IPS.Environment
Dim tmp_event As New IPS.RVarEvent
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
ips = GetObject(, „IPS.Environment“)
tmp_event.EventTrigger = me ’ meine eigene Form ? Ist ein Objekt aber wohl das falsche, oder es fehlt eine Funktion die aufgerufen werden soll.
tmp_event.EventType = Global.IPS.EVarEventTypes.evtOnChange
ips.RegisterVariableEvent(„GZ_TEMP_IST“, tmp_event)End Sub
gibt einen Fehler 0x80010105 (RPC_E_SERVERFAULT))
Danke
P.S.
wenn ich alles am laufen habe, kann ich gerne ein VB.net Beispielprogramm für die Wiki zur Verfügung stellen und da das COM Interface dann auch erklären.
Übrigens mit VB6 geht wohl mit dem COM Objekt fast nichts da Typen deklariert werden die zu VB6 nicht kompatbel sind, z.B. oben erwähntes RVarEvent.