TIA Per Script prüfen ob Seite existiert

amantido

Level-2
Beiträge
63
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Gemeinde,

ich habe folgendes Problem:
Ich will per Scipt prüfen ob eine Seite existiert. Falls diese nicht existiert soll das Script einfach gar nichts machen. Falls die Seite existiert soll er davon einen Screenshot erstellen.

Folgendes habe ich bereits programmiert:
Code:
Dim iPictureNumber
Dim objActiveScreen

iPictureNumber = 0

For iPictureNumber = 1 To 500 Step 1
    
    ActivateScreenByNumber iPictureNumber,0
    Set objActiveScreen = HmiRuntime.ActiveScreen

    If objActiveScreen Is Nothing Then

        DelayFunktion()       
        
    Else    
    
        DelayFunktion()        
        PrintScreen
        
    End If
    
Next

End Sub

In der Delay Funktion wird nichts anderes gemacht als eine Sekunde gewartet. Theoretisch funktioniert das Script soweit auch schon, leider kommt es immer wieder vor dass eine Seite nicht existiert und trotzdem ein Screenshot gemacht wird. Leider bin ich aktuell nirgends fündig geworden.
Ich habe aktuell TIA V14 im Einsatz mit einem TP1200 Comfort Panel.
 
leider kommt es immer wieder vor dass eine Seite nicht existiert und trotzdem ein Screenshot gemacht wird.
Ist das immer bei der selben Bildnummer? (Wie sieht ein Screenshot eines nicht vorhandenen Bildes aus?)
Wie reagiert ActivateScreenByNumber wenn die angegebene Bildnummer nicht existiert - wird da überhaupt ein Bildwechsel gemacht/versucht? Ändert sich der "BaseScreenName"?
Wäre es vielleicht besser, die Bilder durch die Screens-Auflistung zu aktivieren anstatt die Bildnummern durchzuprobieren?

Gibt es Bilder die bei Ereignis "Aufgebaut" in andere Bilder oder ins Permanentfenster wechseln? Kommen vielleicht andere Ereignisse mit Bildwechseln dazwischen?

"Gefühlsmäßig" würde ich die DelayFunktion direkt hinter das ActivateScreen setzen:
Code:
Dim iPictureNumber
Dim objActiveScreen

For iPictureNumber = 1 To 500 Step 1
    
    ActivateScreenByNumber iPictureNumber,0
    [COLOR="#0000FF"]DelayFunktion()[/COLOR]       

    Set objActiveScreen = HmiRuntime.ActiveScreen

    If [COLOR="#0000FF"]Not[/COLOR] objActiveScreen Is Nothing Then
    
        PrintScreen
        
    End If
    
Next

End Sub

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ist das immer bei der selben Bildnummer? (Wie sieht ein Screenshot eines nicht vorhandenen Bildes aus?)
Nein ist bei unterschiedlichen Bildnummern. Der Screenshot sieht dann aus wie das letzte aufgerufene Bild.
Die Funktion schießt aber nicht bei jeder nicht vorhandenen Nummer einen Screenshot (also manchmal scheint er zu erkennen dass diese Nummer nicht existiert)

Wie reagiert ActivateScreenByNumber wenn die angegebene Bildnummer nicht existiert - wird da überhaupt ein Bildwechsel gemacht/versucht? Ändert sich der "BaseScreenName"?
Leider absolut keine Ahnung. Ich habe diesen Teil des Codes im Internet gesehen.

Wäre es vielleicht besser, die Bilder durch die Screens-Auflistung zu aktivieren anstatt die Bildnummern durchzuprobieren?
Ich wüsste nicht wie man das programmiert. Das Script soll bei allen unseren Projekten eingesetzt werden ohne dass ich vorher eine Liste mit den tatsächlich vorhandenen Nummern pflegen muss.

Gibt es Bilder die bei Ereignis "Aufgebaut" in andere Bilder oder ins Permanentfenster wechseln? Kommen vielleicht andere Ereignisse mit Bildwechseln dazwischen?
Nein. Ich lasse das komplett in der Simualtion laufen und einen Bildwechsel bei "Aufgebaut" hab ich nirgends drin.

"Gefühlsmäßig" würde ich die DelayFunktion direkt hinter das ActivateScreen setzen:
Ja sieht definitiv besser aus :D Aber bei dem Code wurde inzwischen viel ausprobiert und somit ist der nicht mehr wirklich sauber strukturiert.
 
Zuletzt bearbeitet:
Zurück
Oben