WinCC flexible Bildnavigation über Skript

IoT

Level-2
Beiträge
22
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,
ich habe eine WinCC flex RT und möchte über zwei Buttons (vor und zurück) komplett durch die ganzen Bilder klicken können. Hierfür gibt es ja eigentlich die Bildnavigation. Leider steht bereits schon die gesamte VISU. Somit müsste ich händisch in jedes Bild diese Buttons einpflegen. Am liebsten würde ich diese in die Vorlage legen. Dies geht jedoch nicht.

Dann dachte ich mir, ich mach's einfach über ein kleines Skript und Bildnummer.
1. Lese aktuelle Bildnummer
2. Erhöhe diese um 1 und versuche das Bild zu öffnen
3. Geht dieses nicht, da die Bildnummer nicht vergeben ist, erhöhe weiter um 1 und versuchs erneut.
Dieses Spiel bis wieder ein Bild gefunden wird.

Das Problem ist, dass jedoch trotz "On Error Resume Next" ein Fehler im Meldefenster sowie Archiv generiert wird und das Skript abbricht.. Habt ihr vielleicht eine andere Idee bzw. wo habe ich einen Fehler gemacht?

Skript:

Dim Obj, ScreenNumber, error_Number, temp

On Error Resume Next

'Aktuelle Bildnummer herausfinden
Set Obj = HmiRuntime
temp = (Split(Obj.BaseScreenName, "_"))
ScreenNumber = CInt(temp(0))

error_Number=99

While (ScreenNumber<100) And (error_Number<>0)
ScreenNumber=ScreenNumber+1
ActivateScreenByNumber ScreenNumber, 0
error_Number=Err.Number
Wend

Achja, die Bilder heißen immer : 01_Startbild, 10_Menü usw. Also die Bildnummer klappt. Wenn die Bildnummern vorhanden sind, klappt das ganze auch. Nur wenn diese nicht zusammenhängen nicht.

Vielen Dank

Gruß
 
Schau doch erstmal händisch nach was du an Bildnummern hast,
dann erstelle eine 'Case' Anweisung wo du für das Aktuelle Bild
ein jeweiligen Case-Fall erstellst wo du zwei Variablen für die vorstehende
und Folgende Bildnummern zuweist.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Welchen Skript Fehler wird angezeigt ?

Mit diesen WHILE Schleife blätterst du durch zämtlichen Bilder bis Nummer 100 erreicht wird. Das kann wohl nicht der Sinn sein ?
Vielleicht hat es damit zu tun.
Code:
While (ScreenNumber<100) And (error_Number<>0)
ScreenNumber=ScreenNumber+1
ActivateScreenByNumber ScreenNumber, 0
error_Number=Err.Number
Wend

Ich wurde CASE vorschlagen.
Code:
SELECT CASE ScreenNumber OF

CASE 1 ActivateScreenByNumber 2, 0
CASE 2 ActivateScreenByNumber 3, 0
CASE 3 ActivateScreenByNumber 10, 0
CASE 10 ActivateScreenByNumber 11, 0
.....
.....
CASE ELSE ActivateScreenByNumber 1, 0
END SELECT

* Ah ! 'rostiger' was schneller als ich.
 
Zuletzt bearbeitet:
Ja, das mit der Case-Geschichte ist eine gute Sache. Das bedeutet aber, dass wenn einmal zusätzlich Bilder dazwischengeschoben werden, muss man das Skript wieder anfassen.

Als Fehler kommt, "Anwahl von Bild mit Nummer: XXX nicht möglich."

Hätte jetzt erwartet, dass das "On Error Resume Next" diesen Fehler unterdrückt und einfach weiter macht.
Trotzdem danke für eure Ideen!
 
Wie du sagst, funtioniert das Skript, nur es kommt diese Fehlermeldung.
Das ist genau was ON ERROR RESUME macht. Ohne ON ERROR RESUME bricht das Skript ab bei den ersten Fehler.
 
Zurück
Oben