Frage zu Button!

Hallo

Habe mal ne Frage zu einem Button. Ich möchte gerne, dass eine Variable den Wert true annimmt, solange der Button gedrückt ist. Wird der Button losgelassen, soll die Variable den Wert false annehmen. Wie realisiert man so was? Habe das ganze mal mit „OnClickToggle“ probiert, aber da wird die Variable nach drücken des Buttons true und nach erneuten drücken wieder false.

MfG
computerpap

Hallo computerpap,

diese Funktion zu realisieren ist leider nicht möglich.

Wenn Du Dir mal die Funktionsweise klar machst, wirst Du verstehen, warum das so ist:

Ein OnClick-Event beinhaltet immer ein „Drücken“ (DOWN) und wieder „Loslassen“ (UP). Der gesamte Ablauf bildet ein einzige geschlossene Einheit. Es ist nicht möglich in diese Einheit hineinzuschauen und Teil-Events daraus abzuleiten.

Das ist auch der Grund, warum ein Klick immer erst beim Loslassen der Maustaste eine Wirkung zeigt. Dies ist besonders augenfällig beim TrackBar-Tool. Viele Neulinge erwarten, dass man damit einen Wert kontinuierlich verändern kann und sind dann meist sehr enttäuscht, wenn der Wert erst beim Loslassen einen Sprung macht.

Gruß
HJH

Danke HJH für die ausführliche Erklärung.
Ich schildere mal genauer was ich machen will, vielleicht gibt es da eine andere Lösung dafür. Ich verwende IPS/Designer als Visu. Hardwareseitig arbeitet eine S7. Ich möchte, wenn ich auf der Visu(im Designer) einen Taster(Button) klicke, ein Bit in einem DB auf 1 setzen. Lasse ich den Taster los, soll das Bit wieder 0 werden. Das Schreiben in die S7 ist nicht das Problem (dank Steiner gelöst). Ich hatte mir das relativ einfach vorgestellt mit einen einfachen Button als Taster, ist es aber scheinbar doch nicht. Welch Möglichkeit gibt es denn da noch?

MfG
computerpap

Hallo computerpap,

der Designer benötigt dafür zwei getrennte Ereignisse. Eins zum Setzen und ein weiteres zum Rücksetzen des Bits.

Dir wird also nichts anderes übrig bleiben, als z.B. zwei Buttons zu verwenden.

Gruß
HJH

Und per Script ist da auch nichts zu machen?

Na ja, starte doch ein Script in dem du die Variable auf True setzt und läßt dann über eine Zeit die Variable wieder auf False setzen. Der Nachteil ist dann nur, das du dich auf eine Zeit festlegen mußt und das Ereignis nicht über die Dauer des Tastendrucks steuern kannst.
Entweder über die Sleep Funktion von IPS oder über ein SetScriptTimer.

Gruß
Jens

Mit dem Timer wäre eine gute Idee, hab ich aber noch nicht gemacht und bräuchte Hilfe.

Per OnClick-Ereignis von meinen Designer Button starte ich folgendes Script:


s7-WriteByte (41041, 1) //Bit1 im DB wird auf true gesetzt

Danach müßte der Timer anlaufen und nach 1s folgendes Script starten:


s7-WriteByte (41041, 0) //Bit1 im DB wird auf false gesetzt

Wo und wie stelle ich den Timer in IPS V2 ein?

MfG
computerpap

Hallo,

als erstes wäre hier eine Anlaufstelle.

Dann sollte man nach IPS_SETScriptTimer Ausschau halten.

Beispiele sind dort vorhanden. Sollte dann noch etwas unklar sein, fragen. :slight_smile:

Hallo computerpap

ich kann dir folgendes kleines Script für die „Tastfunktion“ anbieten.
Brauchst nur noch eine Variable „Anzeige-Taste“ und mit der Designer „Taste“ das Script triggern. Über die Variable „Anzeige-Taste“ steuer ich auch das Bild oder den Text der Taste.

/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : Taste-Aktiv.ips.php
Trigger  : 
Interval : 
*/


//Taste aktiv
//**********

SetValueBoolean("Anzeige-Taste", true);  //Variable für die Anzeige oder Triggerung eines anderen Scripts
Echo "Taste aktiv 
\r";  //Testausgabe
IPS_Sleep(1000);   //Anzeigezeit 1000 = 1 Sek.


//Taster ruhestellung
//***********
SetValueBoolean("Anzeige-Taste", false);
Echo "Taste Ruhestellung  
\r";   //Testausgabe


?>

Grüße
Andrge

Vielen Dank für die Hilfe.
Ich werds dann gleich mal ausprobieren.

MfG
computerpap