Fremde DLL einbinden ?

so, da hab ich das eine Problem (mit Eurer Hilfe) gelöst, da stehe ich vor dem Nächsten.
Ich habe mir (bevor ich IP-Symcon gekauft habe) eine mattronik USB-Relaykarte gekauft. Mit dieser Stelle ich meine Fußbodenheizugnsventile an und aus…
so, nun habe ich aber dann meine Frau doch überreden können, wie wichtig IP-Symcon für unser weiteres Leben ist :smiley: und nun möchte ich die Karte auch uber IPS steuern …

es ist eine DLL-Datei dabei, die ich auch schon versucht habe einzubinden …
habe eine PHP.INI erzeugt und folgende Einträge ergänzt:

extension_dir = „C:\Programme\IP-SYMCON“
extension=„mattuserusb.dll“

es gibt auch keine Fehlermeldungen, aber wenn ich nun z.B. die Funktion setrelais() benutzen möchte, dann kennt php die Funktion nicht…
hat jemand eine Idee, wie man das einbindet ?

Es gibt da auch einen VB-Code (der eigentlich simple ist) … aber in php ?!?:confused:

Declare Sub setrelais Lib "mattuserusb.dll" (ByVal ch As Byte)
Declare Function getrelais Lib "mattuserusb.dll" () As Integer

zum einlesen der Werte :

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
	Label1.Text = Convert.ToString(getrelais, 2)
End Sub

zum Setzen der Werte :

Private Sub Check1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Check8.Click, Check7.Click, ....usw

        'Der eigentliche Wert der die Relais schaltet, ergibt sich aus dem binären Stellenwert des Relais
        'Durch Kombination der Werte kann jede beliebige Kombination erfolgen
        'Eine genauere Beschreibung finden sie im Datenblatt der Relaiskarte
        'Hier findet nur die Berechnung statt. Das übertragen an die Schnittstelle geschieht in setrelais

        x = 0
        If Check1.CheckState Then x = x + 1
        If Check2.CheckState Then x = x + 2
        If Check3.CheckState Then x = x + 4
        If Check4.CheckState Then x = x + 8
        If Check5.CheckState Then x = x + 16
        If Check6.CheckState Then x = x + 32
        If Check7.CheckState Then x = x + 64
        If Check8.CheckState Then x = x + 128
        setrelais(x)
End Sub

Kann mir da jemand helfen ? Suche nun schon den zweiten Tag, finde aber nix. Also es soll wohl mit COM - funktionieren, aber ich finde da keine passenden Beispiele

Danke schon mal vorab
Andy

Hallo Andy!
Hast du mit der Karte, (welchen Typ hast du) einen virtuellen Comport?

Hy, ich habe die
USB Relaiskarte 5 Kanal (Link).
nein, habe keinen virtuellen COMPORT an der Karte … aber halt die DLL vom Hersteller

Danke schon mal
Andy

man kann nicht einfach eine normale Windows-DLL in PHP laden. Diese DLLs müssen speziell compilierte Extensions für PHP sein, welche die von PHP erwarteten Aufruffunktionen bereitstellen. Das ist aber gar nicht so schwierig, ich habe das mal für eine io-Bibliothek gemacht. Gute Hilfestellung leistet dabei PHP4DELPHI, wo wir doch gerade für IPS in Delphi programmieren sollten:rolleyes:

Alternativ kannst Du Deine Funktionen aber auch über das OLE-Interfacedirekt in IPS einbinden.

Tommi

ok, danke … hatte ich mir fastgedacht, da ich auch nach 2 Tagen Suche im Netz nicht wirklich fündig wurde…
denke, ich werde erst mal eine nicht so elegante Variante wählen und per PHP ein VB-Programm erstellen und dann aufrufen und die entsprechenden Daten übergeben…
ist für mich erst mal einfacher (wenn auch nicht so schön :()…

Danke
Andy

Für die Kommunikation aus VB mit IPS könnte TRIXI interessant sein. Download und VB Beispiel auf www.Tonis-Welt.com

Gruß,

Toni