[TRIXI] Implementation VB

Hallo Toni,

besten Dank für die TRIXI.dll. Ich habe gerade versucht dein VB Beispiel zum laufen zu bekommen. Irgendwo hängt es bei mir noch.

Was funktioniert:
Ich habe die TRIXI.dll in den Ordner mit der .EXE Datei kopiert. Danach konnte ich die .EXE starten und bekomme auch eine Verbindung zu IPS.

Was nicht funktioniert:
Ich habe versucht das Formular im Debug-Modus aus VB heraus zu starten. Das funktioniert nicht. Ich habe hier irgendwo gelesen das die TRIXI.dll in dem gleichen Ordner wie die vb.exe liegen soll. Das funktioniert aber auch nicht.
Dazu muss ich sagen das ich „Microsoft Visual Basic 2008 Express Edition“ nutze.

Hast Du noch ne Idee?

Bis dann

Martin

Nö, hab das selbe Problem. Keinen Plan warum das nicht geht. Kenn mich auf der MS-Schiene, also Visual Studio, nicht aus.

Mein Tip: Leg die DLL, bis jemand herausgefunden hat wie es wirklich geht, in einem bei Windows registrierten Suchpfad ab. Findest du raus unter Start - Ausführen - %PATH% - OK. Das müsst eigentlich klappen.

Gruß,

Toni

klappert auch nicht. :frowning:

Meine Dummheit kotzt mich an. :wink:

Ich denke ich gehe einfach mal ins Bett (zu meiner Frau).
Oder aufs Klo. Da hab ich immer gute Ideen.

Trotzdem Danke

Martin

Das ist eine Super Idee und kommt mir gerade recht.

Ich will für Mediacenter ein Addin schreiben, das aufgrund unterschiedlicher Zustände (Playstates) unterschiedliche Lichtszenarien steuert.

Das Addin wir in c# sein.

Wenn ich nun TRIXI auspacke und die vb.net demo starte kommt, sobald ich auf connect (bei local ip) drücke, folgeden exception:
(ich habe ein 64bit Windows7)

Informationen über das Aufrufen von JIT-Debuggen
anstelle dieses Dialogfelds finden Sie am Ende dieser Meldung.

************** Ausnahmetext **************
System.DllNotFoundException: Die DLL „TRIXI.dll“: Das angegebene Modul wurde nicht gefunden. (Ausnahme von HRESULT: 0x8007007E) kann nicht geladen werden.
bei WindowsApplication1.Form1.Connect(String& IP, Int32 Port)
bei WindowsApplication1.Form1.Button1_Click(Object sender, EventArgs e) in C:\Users\MStuehrenberg\Documents\Visual Studio 2010\Projects\TRIXI\TRIXI\Form1.vb:Zeile 20.
bei System.Windows.Forms.Control.OnClick(EventArgs e)
bei System.Windows.Forms.Button.OnClick(EventArgs e)
bei System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
bei System.Windows.Forms.Control.WndProc(Message& m)
bei System.Windows.Forms.ButtonBase.WndProc(Message& m)
bei System.Windows.Forms.Button.WndProc(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

************** Geladene Assemblys **************
mscorlib
Assembly-Version: 4.0.0.0.
Win32-Version: 4.0.30319.1 (RTMRel.030319-0100).
CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll.

TRIXI
Assembly-Version: 1.0.0.0.
Win32-Version: 1.0.0.0.
CodeBase: file:///C:/Users/Michael/Downloads/Install/TRIXI/Demo/VB%20(Express%202010)/TRIXI/bin/Debug/TRIXI.exe.

Microsoft.VisualBasic
Assembly-Version: 10.0.0.0.
Win32-Version: 10.0.30319.1 built by: RTMRel.
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/Microsoft.VisualBasic/v4.0_10.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll.

System.Windows.Forms
Assembly-Version: 4.0.0.0.
Win32-Version: 4.0.30319.1 built by: RTMRel.
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll.

System.Drawing
Assembly-Version: 4.0.0.0.
Win32-Version: 4.0.30319.1 built by: RTMRel.
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll.

System
Assembly-Version: 4.0.0.0.
Win32-Version: 4.0.30319.1 built by: RTMRel.
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll.

System.Runtime.Remoting
Assembly-Version: 4.0.0.0.
Win32-Version: 4.0.30319.1 (RTMRel.030319-0100).
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.Remoting/v4.0_4.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll.

mscorlib.resources
Assembly-Version: 4.0.0.0.
Win32-Version: 4.0.30319.1 (RTMRel.030319-0100).
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_de_b77a5c561934e089/mscorlib.resources.dll.

System.Windows.Forms.resources
Assembly-Version: 4.0.0.0.
Win32-Version: 4.0.30319.1 built by: RTMRel.
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms.resources/v4.0_4.0.0.0_de_b77a5c561934e089/System.Windows.Forms.resources.dll.

************** JIT-Debuggen **************
Um das JIT-Debuggen (Just-In-Time) zu aktivieren, muss in der
Konfigurationsdatei der Anwendung oder des Computers
(machine.config) der jitDebugging-Wert im Abschnitt system.windows.forms festgelegt werden.
Die Anwendung muss mit aktiviertem Debuggen kompiliert werden.

Zum Beispiel:

<configuration>
<system.windows.forms jitDebugging=„true“ />
</configuration>

Wenn das JIT-Debuggen aktiviert ist, werden alle nicht behandelten
Ausnahmen an den JIT-Debugger gesendet, der auf dem
Computer registriert ist, und nicht in diesem Dialogfeld behandelt.

Vergesst den Beitrag drüber.
Die DLL muss noch in debug rein.

Echt? Hat bei mir nicht geholfen. :confused:

toni

Ich habe die VB Demo gestartet und vorher genau in das Debug Verzeichnis die DLL gelegt.
Das hat funktionert.

Zumindest konnte ich den Connect herstellen.

Weiter bin ich noch nicht gekommen.

Hallo Toni,

dank dem C# Beispiel von Grooooog ist auch bei mir der „Knoten“ geplatzt.
Ich habe alles ausprobiert und es funktioniert zu 100%.
In meinem Beispiel kann man nun auch alles im Debug-Modus starten.

An Anfang muss noch ein Import eingefügt werden:


Imports System.Runtime.InteropServices

Hier die Ein-/Anbindung der Funktionen der dll.


    <DllImport("TRIXI.dll")> _
    Private Shared Function Connect(ByVal IP As String, ByVal Port As Integer) As Boolean
    End Function

    <DllImport("TRIXI.dll")> _
    Private Shared Function Disconnect() As Boolean
    End Function

    <DllImport("TRIXI.dll")> _
    Private Shared Function IsOnline() As Boolean
    End Function

    <DllImport("TRIXI.dll")> _
    Private Shared Function WriteString(ByVal VariableID As Integer, ByVal Value As String) As Integer
    End Function

    <DllImport("TRIXI.dll")> _
    Private Shared Function WriteInteger(ByVal VariableID As Integer, ByVal Value As Integer) As Integer
    End Function

    <DllImport("TRIXI.dll")> _
    Private Shared Function WriteFloat(ByVal VariableID As Integer, ByVal Value As Double) As Integer
    End Function

    <DllImport("TRIXI.dll")> _
    Private Shared Function WriteBoolean(ByVal VariableID As Integer, ByVal Value As Boolean) As Integer
    End Function

    <DllImport("TRIXI.dll")> _
    Private Shared Function ReadString(ByVal VariableID As Integer) As String
    End Function

    <DllImport("TRIXI.dll")> _
    Private Shared Function ReadInteger(ByVal VariableID As Integer) As Integer
    End Function

    <DllImport("TRIXI.dll")> _
    Private Shared Function ReadFloat(ByVal VariableID As Integer) As Double
    End Function

    <DllImport("TRIXI.dll")> _
    Private Shared Function ReadBoolean(ByVal VariableID As Integer) As Boolean
    End Function

    <DllImport("TRIXI.dll")> _
    Private Shared Function RunScript(ByVal ScriptID As Integer) As Integer
    End Function


Nutzung in VB.NET


    Private Sub btConnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btConnect.Click
        If Connect(tbIP.Text, 3773) Then
            MessageBox.Show("Connected")
        Else
            MessageBox.Show("Connection failed")
        End If
    End Sub

    Private Sub tbDisconnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tbDisconnect.Click
        Disconnect()
    End Sub

    Private Sub btSendString_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btSendString.Click
        WriteString(tbWSID.Text, tbWriteString.Text)
    End Sub

    Private Sub btReceiveString_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btReceiveString.Click
        tbWriteString.Text = ReadString(tbWSID.Text)
    End Sub

    Private Sub btSendInteger_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btSendInteger.Click
        Dim SendInteger As Integer
        SendInteger = Integer.Parse(tbWriteInteger.Text)
        WriteInteger(tbWIID.Text, SendInteger)
    End Sub

    Private Sub btReceiveInteger_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btReceiveInteger.Click
        tbWriteInteger.Text = ReadInteger(tbWIID.Text)
    End Sub

    Private Sub btIsOnline_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btIsOnline.Click
        If IsOnline() Then
            MessageBox.Show("Is Online!!")
        Else
            MessageBox.Show("Is Offline!!")
        End If
    End Sub

    Private Sub btSendFloat_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btSendFloat.Click
        Dim SendFloat As Double
        SendFloat = Double.Parse(tbWriteFloat.Text)
        WriteFloat(tbWFID.Text, SendFloat)
    End Sub

    Private Sub btReceiveFloat_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btReceiveFloat.Click
        tbWriteFloat.Text = ReadFloat(tbWFID.Text)
    End Sub

    Private Sub btSendBoolean_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btSendBoolean.Click
        WriteBoolean(tbWBID.Text, cbBoolean.Checked)
    End Sub

    Private Sub tbReceiveBoolean_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tbReceiveBoolean.Click
        cbBoolean.Checked = ReadBoolean(tbWBID.Text)
    End Sub

    Private Sub btRunScript_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btRunScript.Click
        RunScript(tbRSID.Text)
    End Sub


Im Anhang ist das Projekt zum spielen.

Besten Dank nochmal für die TRIXI.dll.

Hat halt bei mir etwas länger gedauert.

Meine VB Kenntnisse waren doch etwas eingerostet. :o

@Grooooog

Besten Dank für dein C# Beispiel. War letzten Endes die Initialzündung.

Bis dann

Martin

sorry hab das Projekt vergessen. :rolleyes:

TRIXI_VB.zip (578 KB)

Das sieht ja aus wie das Prism Beispiel… :smiley: Dot.Net eben. Alles dies selbe Suppe :rolleyes:

Beispiel hat bei mir direkt geklappt. Super, bin begeistert. Werd das, wenn ich darf, gern in die Demo aufnehmen.

Toni

Auf jeden Fall! :slight_smile:

Besten Dank

Martin

Hallo Toni,

hast Du mal ein Beispiel für die „Call Back“ Funktion von TRIXI?

Besten Dank

Martin

Im download unter TRIXIPro

Toni

Hallo Toni,

die Version 0.13.2 funktioniert zu 100%.

Besten Dank Toni.
Besten Dank Groooog. (bin nicht sehr bewandert in CallBack-Funktionen sowie Delegates)

Aktuelles Beispiel ist im Anhang

TRIXI_VB.zip (629 KB)

Wenn man mich in die richtige Richtung schubbst, dann fällt manchmal auch was nützliches aus der Tasche. :smiley:

Hallo Toni,

die Callback-Funktion von TRIXI hängt sich nach einer Zeit auf.

Hast Du da eine Idee? Es kann ja auch sein das die Funktion von TRIXI zu IPS stirbt.

Hallo Toni,

nur zur Info:

TRIXI ist, was die Callback-Funktion angeht sauber.
Ich habe bei mir (IgS) TRIXI entfernt und spreche die SOAP-Schnittstelle direkt an. Dabei ist mir aufgefallen das nach einer gewissen Zeit die Session stirbt. Ich werde jetzt den „Rückkanal“ von IPS überwachen.

Ich habe da zwei pragmatische Ansätze.

  1. Über den „Rückkanal“ kommt ne menge rein. Wenn sich da nach einer Zeit „x“ nichts tut, starte ich eine neue Session. So ne Art Watchdog-Timer

  2. Ich gönne dem Ganzen einen Watchdog den ich überwache. Wenn sich da nach einer Zeit „x“ nichts tut, starte ich eine neue Session.

Momentan gefällt mir mehr 1.

in VB.NET Express 2010 scheint doch einiges anders zu sein,
so das die letzte hier enthaltene Version leider nach der konvertierung nicht läuft.

Hat dies bereits jemand erfolgreich durchgeführt ?

vielen Dank!

Hallo Jörg,

ich nutze TRIXI nicht mehr. Mach jetzt alles über die SOAP.
Ich habe nur ein angefangenes Projekt mit TXIXI in VB.NET 2010.
Bis auf das oben beschriebene Problem läuft das aber.

Hab’s noch mal gestartet. Funzt!