Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 6 von 6

Thema: C-Aktion für Radio-Box

  1. #1
    Registriert seit
    15.09.2008
    Beiträge
    165
    Danke
    10
    Erhielt 6 Danke für 6 Beiträge

    Frage


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo.

    Ich möchte gerne diese Radio-Box auswerten und damit die Größe von Kurvenfenstern anpassen.
    Ich schreibe die Größe für die Fenster in eine Variable. Funktioniert auch alles so weit, aber wenn ich auf die Radio-Box klicke, bzw die Position des Punktes ändere, wird immer die letzte Zeile meiner C-Aktion bearbeitet und dieser Wert in die Variable geschrieben.
    Hab leider keine Ahnung von C.

    Code:
    if ("Startbild","RadioBox1","Index")1;
    SetTagWord("AuflösungBreite",1024);
    if ("Startbild","RadioBox1","Index")2;
    SetTagWord("AuflösungBreite",1280);
    Soll heißen, dass beim Punkt in Feld 1 die Auflösung 1024 und beim Punkt in Feld 2 die Auflösung 1280 betragen soll.

    Kann mir jemand sagen was ich falsch mache?
    Ich habs auch schon mit GetIndex versucht, aber auch ohne erfolg.
    Die C-Aktion wird ausgeführt: Ereignis - Propertythemen - Ausgabe/Eingabe - Selektiertes Feld / Änderung

    Danke
    Step7 5.5
    TIA 11 / 13
    WinCC flexible 2008
    WinCC 7.0 / 7.3
    Zitieren Zitieren C-Aktion für Radio-Box  

  2. #2
    Registriert seit
    29.03.2004
    Beiträge
    5.793
    Danke
    144
    Erhielt 1.706 Danke für 1.238 Beiträge

    Standard

    Ich verknüpfe die Eigenschaft "Selektiertes Feld" immer mit einer internen Variablen (im Beispiel radioProp).
    Dann könntest du einen anderen Wert im Skript folgendermaßen schreiben:

    Code:
    DWORD ret;
    DWORD aufloesung;
    
    ret = GetTagDWord("radioProp");
    if (ret == 1) {
     aufloesung = 1024;
    }
    else if (ret == 2) {
      aufloesung = 1280;
    }
    SetTagDWord("TestDWORD",  aufl);
    In radioProp ist je nach gewählten Index immer ein Bit gesetzt. Also wenn du mehrere Einträge hast, vergleichen auf 1, 2, 4, 8 , ...

  3. #3
    PBO-WE ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    15.09.2008
    Beiträge
    165
    Danke
    10
    Erhielt 6 Danke für 6 Beiträge

    Standard

    Hallo.
    Leider funktioniert das nicht so richtig.
    Der Punkt in der Radio-Box springt immer beim Klicken um.
    Die Variable ändert sich auch jedes mal,
    aber das Schreiben meiner Variable "auflösung" (Kurvenfenster_Breite) ist nicht immer richtig. Mal ändert sie sich auf 1024, wenn ich auf 1024 klicke, mal nicht. Dann ändert sie sich auf einmal, wenn ich auf 1280 klicke auf 1024...
    Aber es wird doch die Var RadioBox1 gelesen und auf 1 oder 2 verglichen und dann der Wert entsprechend in Kurvenfenster_Breite geschrieben.
    Verstehe das nicht...

    Kann es sein, dass die Aktion schneller angeworfen wird, als dass sich die Var RadioBox1 von 1 auf 2 und umgekehrt ändern kann?

    Code:
    #include "apdefap.h"
    void OnPropertyChanged(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName,  long  value)
    {
    DWORD ret;
    DWORD aufloesung;
    
    ret = GetTagDWord("RadioBox1");
    if (ret == 1) {
     aufloesung = 1024;
    }
    else if (ret == 2) {
      aufloesung = 1280;
    }
    SetTagDWord("Kurvenfenster_Breite",  aufloesung);
    }
    Angehängte Dateien Angehängte Dateien
    Step7 5.5
    TIA 11 / 13
    WinCC flexible 2008
    WinCC 7.0 / 7.3

  4. #4
    PBO-WE ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    15.09.2008
    Beiträge
    165
    Danke
    10
    Erhielt 6 Danke für 6 Beiträge

    Standard

    Var Kurvenfenster_Breite Vorzeichenbehafteter 32Bit
    Var RadioBox1 Vorzeichenbehafteter 32Bit
    Step7 5.5
    TIA 11 / 13
    WinCC flexible 2008
    WinCC 7.0 / 7.3

  5. #5
    Registriert seit
    29.03.2004
    Beiträge
    5.793
    Danke
    144
    Erhielt 1.706 Danke für 1.238 Beiträge

    Standard

    Wenn du mit dem OnPropertyChange Event arbeitest, kannst du direkt den übergebenen Wert (value) abfragen:

    Code:
    if (value == 1) {
      SetTagDWord("Kurvenfenster_Breite",  1024);
    }
    else if (value == 2 ) {
      SetTagDWord("Kurvenfenster_Breite",  1280);
    }
    Du musst nur dafür sorgen dass "Kurvenfenster_Breite" einen entsprechenden Startwert hat, da ansonsten nur ein anderer Wert drinsteht wenn jemand eine Option gewechselt hat.

  6. #6
    PBO-WE ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    15.09.2008
    Beiträge
    165
    Danke
    10
    Erhielt 6 Danke für 6 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Danke!!!
    Jetzt funktioniert es.
    Gibt es irgendwelche Literatur, wo man hilfe zu diesen C-Aktionen bekommt?
    Ich hab da nämlich absolut keine Ahnung von.

    Gruß
    Step7 5.5
    TIA 11 / 13
    WinCC flexible 2008
    WinCC 7.0 / 7.3

Ähnliche Themen

  1. Aktion aufrufen
    Von HK09 im Forum CODESYS und IEC61131
    Antworten: 3
    Letzter Beitrag: 09.08.2010, 22:59
  2. WinCC Flexible 2008 Radio Buttons
    Von MatthiasH24 im Forum HMI
    Antworten: 5
    Letzter Beitrag: 28.09.2008, 13:17
  3. Typumwandlung in GRAPH Aktion
    Von manas im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 20.01.2008, 15:42
  4. C-Aktion in WinCC
    Von netx1 im Forum HMI
    Antworten: 8
    Letzter Beitrag: 13.12.2007, 19:11
  5. MOVE in Graph Aktion
    Von manas im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 15.09.2007, 21:26

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •