Showing results 1 to 6 of 6

Thread: Anlegen und Parametrieren von Funktion Typ „Treiber Kommandos“

  1. #1
    Join Date
    29.07.2007
    Location
    Germany
    Posts
    192

    Frage Anlegen und Parametrieren von Funktion Typ „Treiber Kommandos“

    Hallo!

    Ich versuche gerade per VBA eine Funktion von Typ „Treiber Kommandos“ anzulegen und komme bei den Parametern einfach nicht auf die richtige Syntax.

    Das Anlegen der Funktion ist kein Problem, aber wie setze ich die Parameter damit der Modbus Treiber „Modbus Nr.123“ das Treiber Kommando „Treiber in Simul Mode“ erhält?

    Sollte doch wohl über das SubItem „Command“ funktionieren?!

    Kann mir jemand netterweise mit einem Beispiel weiterhelfen?

    Danke!

    H.-P.
    string zenon = "7.60 Build61612 / 8.00 Build62073/ 8.10 Build62573";
    string Windows = "7 / 10 / 2016";
    string VMware = "Workstation / VMware ESXi";

  2. #2
    Join Date
    30.05.2007
    Location
    Salzburg
    Posts
    879

    Default Re: Anlegen und Parametrieren von Funktion Typ „Treiber Kommandos“

    Der einfachste Weg zu ermitteln wie eine Funktion aufgebaut ist, kann mittels .xml Export herausgefunden werden:
    - gewünschte Funktion in zenOn Editor anlegen
    - diese Funktion via ".xml Export" exportieren
    - mittels "XML Notepad" (auf zenOn DVD vorhanden) oder ähnlichem xml Editor diese exportierte Datei öffnen und die Parameter heraussuchen

    Sub fctCreateDriverMode()
    
    Dim zFCT As RtFunction
    On Error Resume Next
    Set zFCT = MyWorkspace.ActiveDocument.RtFunctions.Create("drvSimu", tpDriverCommand)
    
        With zFCT
            .Name = "drvSimu"
            .DynProperties("Command[0].DrvIndex") = 11
            .DynProperties("Command[0].Command") = 3 'Simulation-Mode
            '.DynProperties("Command[0].Command") = 4 'Hardware-Mode
        End With
    End Sub

    Zu beachten ist, dass in zenOn Treiber nicht über den Namen sondern über den Index angesprochen werden (der Index des gewünschten Treibers kann von der exportierten .xml Funktion herausgelesen werden.

    Gruß,
    Herbert
    Last edited by herberto : 15th October 2008 at 13:42

  3. #3
    Join Date
    29.07.2007
    Location
    Germany
    Posts
    192

    Default AW: Anlegen und Parametrieren von Funktion Typ „Treiber Kommandos“

    Hallo Herbert!

    Danke für die schnelle Antwort!

    Auf die einfachsten Sachen kommt man ja oft nicht: Exportieren und dort nachschauen...
    Ich habe die ganze Zeit mit dem String UsrCommand herumprobiert.
    In der Dokumentation werden die DynProperties zwar aufgeführt aber nicht deren Funktion beschrieben.

    Jetzt habe ich noch ein kleines Problem:

    Die Funktion soll über eine VBA-Schleife in allen geladenen Projekten bei allen Treibern ,außer den Systemtreibern, angelegt werden. Wie finde ich per VBA den Index zu den jeweiligen Treibern? Bei den Treibern habe ich keine Eigenschaft dafür gefunden.

    Danke nochmals!

    H.-P.
    string zenon = "7.60 Build61612 / 8.00 Build62073/ 8.10 Build62573";
    string Windows = "7 / 10 / 2016";
    string VMware = "Workstation / VMware ESXi";

  4. #4
    Join Date
    30.05.2007
    Location
    Salzburg
    Posts
    879

    Default Re: Anlegen und Parametrieren von Funktion Typ „Treiber Kommandos“

    Hallo HP,

    Das Problem hierbei ist, dass zur Zeit per VBA die TreiberID nicht ausgelesen werden kann (dies wird erst mit der Nachfolgerversion von zenOn 6.22 möglich sein mit "Driver.ID").

    Jedoch gibt es einen "Trick 17"

    Wird eine Variable von einem Treiber angelegt, so bekommt man über die Variable die TreiberID mit. D.h. also eine DummyVariable anlegen, dort die TreiberID auslesen, diese dann bei der TreiberFunktion einpflegen und die DummyVariable wieder löschen.

    Da ich selber nun einige Zeit mit diesem "verzwickten Problemchen" verbracht habe, will ich meine Art der Implementierung nicht vorenthalten

    Bitte gib Bescheid, ob der nachfolgende Code funktioniert:


    Sub fctDriverSimu()
    
    Dim zProjects As Projects
    Dim zProject As Project
    Dim zDrivers As Drivers
    Dim zDriver As Driver
    Dim zVariable As Variable
    Dim zFCT As RtFunction
    
    Dim iProjectCount As Integer
    Dim iDriverCount As Integer
    
    
    Set zProjects = MyWorkspace.Application.Projects
    
    On Error Resume Next
    
        For iProjectCount = 0 To zProjects.Count - 1
            Set zProject = zProjects.Item(iProjectCount)
                'Abfrage ob Projekt geladen ist
                If Not zProject Is Nothing Then
                    Debug.Print zProject.Name
                    Set zDrivers = zProject.Drivers
                    For iDriverCount = 0 To zDrivers.Count - 1
                        Set zDriver = zDrivers.Item(iDriverCount)
                        'Abfrage des Treiberdateinamen (da Simulationstreiber mehrmals angelegt werden kann - sprachenunabhängig)
                        Select Case zDriver.Driver
                        Case "MATHDR32"
                            Debug.Print zDriver.Driver
                        Case "Intern"
                            Debug.Print zDriver.Driver
                        Case "SIMUL32"
                            Debug.Print zDriver.Driver
                        Case "SYSDRV"
                            Debug.Print zDriver.Driver
                        Case Else
                        
                            'hier kommt "Trick 17"
                            Debug.Print zDriver.Driver
                            'DummyVar des Treibers anlegen
                            Set zVariable = zProject.Variables.CreateVar("DummyVar" & zDriver.Name, zDriver, tpDriverVariable, zProject.VarTypes.Item("INT"))
                            Set zVariable = zProject.Variables.Item("DummyVar" & zDriver.Name)
                            Debug.Print zProject.Variables.Item(zVariable.Name).DynProperties("Driver")
                            
                            'Funktion anlegen
                            Set zFCT = zProject.RtFunctions.Create("drvSimu" & zDriver.Name, tpDriverCommand)
                            With zFCT
                                .Name = "drvSimu" & zDriver.Name
                                .DynProperties("Command[0].DrvIndex") = 11
                                .DynProperties("Command[0].Command") = 3 'Simulation-Mode
                                '.DynProperties("Command[0].Command") = 4 'Hardware-Mode
                            End With
                            
                            'DummyVar des Treibers wieder löschen
                            zProject.Variables.DeleteVar ("DummyVar" & zDriver.Name)
                            
                        End Select
                    Next iDriverCount
                End If
        Next iProjectCount
    End Sub

    Gruß,
    Herbert

  5. #5
    Join Date
    29.07.2007
    Location
    Germany
    Posts
    192

    Default AW: Anlegen und Parametrieren von Funktion Typ „Treiber Kommandos“

    Aber hallo, da muß man ja ganz schön um die Ecke programieren!

    Wenn ich die Zeile in Deinem Code:

                                .DynProperties("Command[0].DrvIndex") = 11

    ändere zu:

                                .DynProperties("Command[0].DrvIndex") = zVariable.DynProperties("Driver")

    dann funktioniert es!

    Wird es in der nächsten zenOn Version viele Erweiterungen im VBA geben?

    Danke nochmal für die Hilfe!!!


    Gruß,

    H.-P.
    string zenon = "7.60 Build61612 / 8.00 Build62073/ 8.10 Build62573";
    string Windows = "7 / 10 / 2016";
    string VMware = "Workstation / VMware ESXi";

  6. #6
    Join Date
    30.05.2007
    Location
    Salzburg
    Posts
    879

    Default Re: Anlegen und Parametrieren von Funktion Typ „Treiber Kommandos“

    .DynProperties("Command[0].DrvIndex") = 11
    -> da hat sich ein copy&paste Fehler ins Forum meinerseits eingeschlichen sry

    Wird es in der nächsten zenOn Version viele Erweiterungen im VBA geben?
    -> es wird permanent an der VBA Schnittstelle gefeilt. Sei es Erweiterungen bei bereits eingebauten Modulen oder eben auch bei neuen features (Modulen). Mit 6.22 SP1 wird eine VSTA-Compiler (neben VBA) verfügbar sein, mit welcher dann per .NET Framework Applikationen (z.B. C# oder VB.NET) innerhalb von zenOn auf den Editor oder auch Runtime zugegriffen werden kann

    Gruß,
    Herbert

Similar Threads

  1. Replies: 5
    Last Post: 16th July 2008, 09:16

Posting Rules

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •