Step 7 Bildsprung

kuti

Level-1
Beiträge
354
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich möchte gerne mit nur einer Schaltfläche immer zurückspringen. Es gibt ja diese Systemfunktion "AktiviereVorherigesBild" jedoch hilft mir dieses hier nicht weiter, da ich nur ein Bild habe, wo ein Skript die csv-Dateien einliest und je nach csv-Datei dieses Bild unterschiedlich darstellt. Was mir von diesen "Bildern" bekannt ist, ist ihre Nummer. Ich wollte bei der Schaltfläche "SetzeWert" nehmen und die Nummer des alten "Bildes" in dieser Variable schreiben, jedoch gibt es Probleme, wenn ich mehr als zwei Sprünge mache, da wie gesagt nur eine Schaltfläche existiert. So ein Fifo-Prinzip würde mir helfen, aber wie man das ganze in Skripten programmiert, keine Ahnung. Für jede Hilfe bin ich dankbar. Verwende WinCC flex.

Gruß
 
Zuletzt bearbeitet:
Gibt es eigentlich in WinCCflex die Möglichkeit in einem Script eine Variabele zu verschieben (Move). Im Prinzip möchte ich so etwas wie ein stack. Ich starte das Script mit einer Schaltfläche und eine Zahl wird gespeichert. Dann drücke ich nochmal auf eine Schaltfläche und eine andere Zahl wird gespeichert (die andere wird dann runtergeschoben) usw. Rückwärts sollte es dann so gehen: Ich drücke eine "Zurück-Taste" und der die oberste Zahl wird aufgerufen. Dann drücke ich noch mal diese Taste und die zweite Zahl wird aufgerufen usw. Ich hoffe ihr versteht mich. Leider weiß ich nicht wie ich das in WinCC flex realisieren soll.

Gruß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
... das habe ich nicht verstanden - sorry ... 8)

Hast du ein Bild, dass du unterschiedlich parametriert betreibst ?
Warum liest dein Bild die CSV-Datei ein ? Das wäre doch eher ein Fall für die Aktion (also Anwahl vorheriges Bild).

Mal prinzipiell :
Du könntest hier mit einem String arbeiten. Wenn du einen posititiven Bildwechsel machst dann hängst du einfach die Nummer des letzten Bildes mit Semikolon getrennt hinten an.
Machst du einen negativen Bildwechsel (also zurück) dann nimmst du die letzte Bildnummer im String für die Bildanwahl und verkleinerst den String um den letzten Eintrag.
In jedem Fall solltest du hier aber noch eine Hintertür (also Reset Speicher) einbauen.

Gruß
Larry

Nachsatz:
Ich denke, ich habe deine 2. Frage mit meinem Beitrag gleich mit beantwortet ...
 
:) Genau so ein Bild habe ich. Ein Bild mit mehreren Bildbausteinen also mehrere Variablen. Bei jedem Aufruf werden diese Variablen mit den Werten der csv-Dateien beschrieben. Das heißt es gibt nur ein Bild. Schönen Dank wegen der Idee, aber das ganze mit VBS zu programmieren, fällt mir schwer, da ich noch neu auf diesem Gebiet bin.
 
... dann fang einfach mal an und stell dein Ergebnis hier ein und wir machen dann gemeinsam weiter und Optimieren und Verbessern ...

Für den String gibt es zum Finden von etwas die Index-Befehle (InStr und InStrRev) - hier vielleicht das Semikolon suchen.

Gruß
Larry
 
Sorry, Änderung meines ersten Beitrags:

ich möchte gerne mit nur einer Schaltfläche immer zurückspringen. Es gibt ja diese Systemfunktion "AktiviereVorherigesBild" jedoch hilft mir dieses hier nicht weiter, da ich nur ein Bild mit 10 Bildbausteinen habe, wo ein Skript die csv-Dateien einliest und die Variablen der Bildbausteine beschreibt und je nach csv-Datei dieses Bild dadurch unterschiedlich darstellt. Was mir von diesen "Bildern" bekannt ist, ist ihre Nummer. Ich wollte bei der Schaltfläche "SetzeWert" nehmen und die Nummer des alten "Bildes" in dieser Variable schreiben, jedoch gibt es Probleme, wenn ich mehr als zwei Sprünge mache, da wie gesagt nur eine Schaltfläche existiert. So ein Fifo-Prinzip würde mir helfen, aber wie man das ganze in Skripten programmiert, keine Ahnung. Für jede Hilfe bin ich dankbar. Verwende WinCC flex.
 
@ Larry Ich weiß :) Wollte dir (Euch) nur nichts falsches posten

Danke Volker für diesen Hinweis. Werde mir mal das jetzt anschauen.
 
ohh. doch länger her als ich dachte. hab ich 2006 mal gebastelt :ROFLMAO:

habs mal migriert auf flex 2008 sp2
 

Anhänge

  • bildhistory_wccf2008sp2.zip
    1,5 MB · Aufrufe: 4
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich möchte gerne im Script mit Arrayvariablen "ArrayVar" arbeiten. Und zwar habe ich eine normale Integervariable "VarInt", die sich bei jedem Klick auf einer Schaltfläche ändert (auch Integer). Jetzt möchte ich gerne die erste Änderung dieser "VarInt" dem ersten Indize im Array zuweisen, die zweite Änderung soll dem zweiten Indize zugewiesen werden usw. . Das heißt ich speichere meine Änderungen immer in diesem Array.
Also so:
ArrayVar(0) = 1. Änderung von VarInt
ArrayVar(1) = 2. Änderung von VarInt
ArrayVar(2) = 3. Änderung von VarInt
.
.
.
ArrayVar(19) = 20. Änderung von VarInt

So im Pinzip möchte ich das gerne haben. Leider weiß ich nicht, wie ich das im Script umsetzen kann. Mit den Schaltflächen inkrementiere und dekremntiere ich die Indizes im Array (ErhöheWert und VerminereWert). Ich wäre für jede Hilfe dankbar.

Gruß
 
Hallo,
mal eine Anmerkung zu deinem Code :
1. Wenn du bei allen IF's immer das Gleiche machst dann kannst du dir die IF's auch schenken.
2. Ich sehe jetzt noch nicht, wie du deine Navigation damit realisieren willst
3. Was ist, wenn du mehr vor-Sprünge gemacht hast als dein Array fassen kann ?

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mein "Zaehler" wird ja immer inkrementiert oder dekremetiert von den den Schaltflächen, daher stehen bei den IF's immer etwas anderes.
Zu 3. Maximal sind 20 Vorsprünge erlaubt daher werde ich es begrenzen.
 
Naja ... ich dachte eher so etwas (vom Prinzip her) :
Code:
beim Seitenwechsel "vor" :
meineStringVar = meineStringVar + ";" + cstr(aktuelle_SeitenNummer)
neue Seite aufrufen

beim Seitenwechsel zurück :
dim p , l , letzteSeitenNummer
p = inStrRev(meineStringVar , ";")
l = len(meineStringVar)

letzteSeitenNummer =  mid(meineStringVar  ,p+1 , l - p -1)
meineStringVar = left(meineStringVar  , p-1)
Seite [letzteSeitenNummer] aufrufen

Der Vorteil eines Strings ist, dass er etwas mehr Elemente aufnehmen kann - aber auch hier mußt du noch eine max.-Überprüfung mit einbauen.
Die Variable "meineStringVar " sollte eine Flex-interne Variable sein - muß aber keine Verbindung zur Steuerung haben ...

Gruß
Larry
 
Zurück
Oben