Page 1 of 2 1 2 LastLast
Showing results 1 to 10 of 11

Thread: bestimmtes Rezept bei Runtimestart laden

  1. #1
    Join Date
    29.07.2007
    Location
    Linz
    Posts
    50

    Default bestimmtes Rezept bei Runtimestart laden

    Hallo,

    ich habe ein Bild, Typ Rezeptgruppenmanager, über das der Benutzer aus einer Reihe von Rezepten wählen kann.
    Wird ein Rezept ausgewählt und die Daten geladen, so sollen diese nach Neustart der Runtime automatisch wieder zur Verfügung stehen.

    Wie kann das am einfachsten gelöst werden?

    Danke,
    alex

  2. #2
    Join Date
    30.05.2007
    Location
    Salzburg
    Posts
    882

    Default Re: bestimmtes Rezept bei Runtimestart laden

    Hallo Alex,

    Handelt es sich hierbei immer um das gleiche Rezept (also der Name)?
    -> wenn ja, dann könnte man ja die Funktion (welche das Laden des Rezepts ausführt) in das AUTOSTART-Script einbinden
    -> bevor dem Beenden der Runtime müsste sichergestellt werden, dass dieses Rezept mit den richtigen Daten befüllt ist (wäre auch die Möglichkeit hier mit dem AUTOEND-Script zu arbeiten).

    Gruß,
    Herbert

  3. #3
    Join Date
    29.07.2007
    Location
    Linz
    Posts
    50

    Default AW: Re: bestimmtes Rezept bei Runtimestart laden

    nein, es ist nicht imme das selbe Rezept.

  4. #4
    Join Date
    30.05.2007
    Location
    Salzburg
    Posts
    882

    Default Re: bestimmtes Rezept bei Runtimestart laden

    Eine Möglichkeit würde bestehen die Funktion, welche im AUTOSTART-Script verknüpft ist, mit der Option "mit Filter Dialog" aufzuschalten und somit dem Bediener die Auswahl zu ermöglichen, welches Rezept verwendet werden soll
    -> siehe auch unter Handbuch -> Rezeptgruppen Manager -> Funktionen -> Bildumschaltung Rezeptgruppen-Manager

    Weiters könnte die Funktionalität "Auswahl Rezept durch Variable" herangezogen werden. Der Name des zuletzt ausgewählten Rezepts in eine interne Variable vom Typ String schreiben. Damit der Wert der Variable auch nach dem Neustart der Runtime zur Verfügung steht, muss die Variableneigenschaft "Remanent" gesetzt werden
    -> siehe unter Treiber -> Intern -> Treiberspezifische Funktionen

    Natürlich wäre es auch möglich dies über VBA zu realisieren.

    Gruß,
    Herbert

  5. #5

    Default Re: bestimmtes Rezept bei Runtimestart laden

    Hallo,

    bei der Bildumschaltfunktion auf ein RGM Bild gibt es, in der Registerkarte "Optionen", die Möglichkeit die Auswahl des aufzuschaltenden Bildes vom Wert einer definierbaren Variable abhängig zu machen.
    Wenn nun in einer remanenten internen Variable der Name des zuletzt aufgeschaltenen Rezeptes gespeichert wird kann dies Variable in der Bildumschaltfunktion verwendet werden. Diese Bildumschaltfunktion kann dann im AUTOSTART Script verwendet werden.

    lg,
    wolfgang

  6. #6
    Join Date
    29.07.2007
    Location
    Linz
    Posts
    50

    Default AW: bestimmtes Rezept bei Runtimestart laden

    Ich habe jetzt versucht den Rezeptnamen über eine remantente Variable zu laden.
    Diese Funktionalität bei der Bildumschaltung lässt aber scheinbar nur die Selektion von Rezepten innnerhalb einer Rezeptgruppe zu.
    Ich muss aber zusätzlich auch eine Rezeptgruppe auswählen -> dies soll natürlich auch automatisch geschehen.

    Gibt es hierfür vielleicht eine ähnliche Funktion?

  7. #7
    Join Date
    30.05.2007
    Location
    Salzburg
    Posts
    882

    Default Re: bestimmtes Rezept bei Runtimestart laden

    Hallo Alex,

    Bei einer solchen "Spezialfunktionalität" sehe ich leider keinen Weg dies über die Standardfunktionalitäten seitens zenOn abzudecken.

    Somit wäre dies über VBA zu realisieren....

    Nachfolgend hätte ich kurz etwas zusammengeschrieben. Folgende Voraussetzungen wären hierbei zu beachten:
    - die Variable (String), welche den Namen des letzten Rezepts beinhaltet muss "advised"sein, damit diese per VBA gelesen werden kann
    - das Rezept welches beim Runtime-Start angestoßen werden soll (und ebenfalls in der Variable definiert ist) darf namentlich nur einmal in allen Rezeptgruppen vorkommen

    Vorgehensweise:
    - den Wert der Stringvariable auslesen
    - durch alle Rezeptgruppen und die darin befindlichen Rezepte iterieren
    -> Vergleich ob Variablenwert und Rezeptname gleich ist
    -> wenn ja, dann führe das Rezept aus

    Sub ExecuteMyRecipe()
    
    Dim obRecipeGroups As RGMRecipeGroups
    Dim obRecipeGroup As RGMRecipeGroup
    Dim obRecipe As RGMRecipe
    Dim obVariable As Variable
    
    Dim iRGroup As Integer
    Dim iRecipe As Integer
    
        'create a object of the variable which contains the last written Recipe
        'via systemvariable allocated to internal variable (set to remanent)
        Set obVariable = thisProject.Variables.Item("MyRecipeName")
    
        'check if the variable exists
        If obVariable Is Nothing Then
            Debug.Print "can not access variable"
            Exit Sub
        End If
        
        'check if the variable is advised (necessary for reading via VBA)
        If Not obVariable.IsOnline Then
            Debug.Print obVariable.Name & " is not advised for reading!"
            Exit Sub
        End If
        
        Set obRecipeGroups = thisProject.RGMGroups
        'loop through all RecipeGroups
        For iRGroup = 0 To obRecipeGroups.Count - 1
            Set obRecipeGroup = obRecipeGroups.Item(iRGroup)
            If Not obRecipeGroup Is Nothing Then
                'loop through all recipes within the given RecipeGroup
                For iRecipe = 0 To obRecipeGroup.RecipeCount - 1
                    Set obRecipe = obRecipeGroup.RecipeItem(iRecipe)
                    If Not obRecipe Is Nothing Then
                        'check if the name of the recipe matches the value of the variable
                        If obRecipe.DynProperties("RecipeName") = obVariable.Value Then
                            'yes -> this is the correct one ... so do your actions with this recipe
                            'i.e. execute
                            obRecipe.Execute
                        End If
                    End If
                
                Next iRecipe
            End If
        Next iRGroup
    End Sub

    Gruß,
    Herbert
    Last edited by herberto : 30th June 2009 at 19:16

  8. #8
    Join Date
    29.07.2007
    Location
    Linz
    Posts
    50

    Default AW: bestimmtes Rezept bei Runtimestart laden

    Hallo Herbert,

    vielen Dank für die Hilfe.
    Kannst du mir bitte noch sagen, wie ich via VBA auf die ComboBox mit dem Rezeptnamen zugreifen kann. Muss den Namen ja auslesen und der remanenten Variable zuweisen.

    Bzw. gibt es wo eine Beschreibung der ZenOn VBA Objekte?

    Gruß,
    Alex

  9. #9
    Join Date
    30.05.2007
    Location
    Salzburg
    Posts
    882

    Default Re: bestimmtes Rezept bei Runtimestart laden

    Hallo Alex,

    Kannst du mir bitte noch sagen, wie ich via VBA auf die ComboBox mit dem Rezeptnamen zugreifen kann. Muss den Namen ja auslesen und der remanenten Variable zuweisen.
    -> wenn z.B. das zuletzt abgesetztes Rezept eroiert werden soll, kann hierfür die Systemtreiber-Variable "Letztes abgesetztes Rezept/RGM-Rezept" verwendet werden. Ebenso könnte auch "Letzte abgesetzte Rezeptgruppe" in Kombination verwendet werden.
    -> alle verfügbaren Systemtreiber-Variablen hinsichtlich RGM wären hier aufgelistet: Treiber -> SYSDRV -> Variablen anlegen -> Adressierung -> "Rezepte Standard und Rezeptgruppen Manager"

    -> wenn auf das aktuell im RGM-Bild angezeigte Rezept zugegriffen werden soll, dann wäre hier eine Methodik beschrieben: http://www.copadata.com/forums/showthread.php?t=216

    Bzw. gibt es wo eine Beschreibung der ZenOn VBA Objekte?
    das wäre hier beschrieben: http://www.copadata.com/forums/showthread.php?t=657

    Gruß,
    Herbert

  10. #10
    Join Date
    29.07.2007
    Location
    Linz
    Posts
    50

    Default AW: Re: bestimmtes Rezept bei Runtimestart laden

    Hallo Herbert,

    Danke für die super Unterstützung!
    Funktion läuft jetzt. Habe es über die Systemtreiber-Vaiable und einer Zuweisung auf die remantente Variable gelöst.

    Grüße aus Linz,
    Alex

Posting Rules

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