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

Ergebnis 1 bis 3 von 3

Thema: C Script an EA-feld von type string in WinCC 7

  1. #1
    Registriert seit
    24.10.2007
    Ort
    Niederlande
    Beiträge
    673
    Danke
    22
    Erhielt 143 Danke für 135 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich habbe ein EA-feld wo ich ein eine REAL wert aus die SPS wol tonen wie ein string. z.b. Real 1.23 in WinCC "1.2 %" Ich habe al vielle versuche gemacht aber heute komt die richtige wert in Bild. Aber ich muste die String erst mit SetTagCharWait in eine Interne Variable von WinCC schreiben und darnach mit GetTagCharWait lesen , bevor ich er als return an das AE feld kan geben. Mach ich das nicht bekom ich vremde zeichen in das ausgave feld. Ist er ein lossung um das ohne SetTag und GetTag zu machen?

    Gruss,
    Joop
    Angehängte Grafiken Angehängte Grafiken
    Zitieren Zitieren C Script an EA-feld von type string in WinCC 7  

  2. #2
    Registriert seit
    29.03.2004
    Beiträge
    5.739
    Danke
    143
    Erhielt 1.686 Danke für 1.225 Beiträge

    Standard

    Wenn du einen Zeiger auf eine lokale Variable zurückgibst ist dieser nach dem Verlassen der Funktion nicht mehr gültig.
    In Standard-C müsste man für sowas malloc() verwenden, und der Aufrufer der Funktion müsste den reservierten Speicher mit free() wieder freigeben damit es kein Speicherleck gibt. Da man das in WinCC nicht kann gibt es dort eine Funktion für eine WinCC eigene Speicherverwaltung mit SysMalloc().

    Du musst mit SysMalloc() Speicher für eine Variable anfordern, dann kannst du den Zeiger auf diese Variable als Funktionsrückgabewert verwenden. WinCC kümmert sich dann um die Speicherverwaltung dieser Variable.

    Beispiel (ungetestet):
    Code:
    float getal;
    char *uit = SysMalloc(50); /* Speicher für 50 chars reservieren */
    getal = GetTagFloat("TestFloat");
    sprintf(uit, "afw: %.1f %", getal);
    return uit;
    Warum zeigst du die Real-Variable denn nicht direkt an sondern der Umweg über den String? Das wäre doch viel einfacher.
    Geändert von Thomas_v2.1 (17.11.2012 um 23:58 Uhr)

  3. Folgender Benutzer sagt Danke zu Thomas_v2.1 für den nützlichen Beitrag:

    JoopB (18.11.2012)

  4. #3
    JoopB ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    24.10.2007
    Ort
    Niederlande
    Beiträge
    673
    Danke
    22
    Erhielt 143 Danke für 135 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Warum zeigst du die Real-Variable denn nicht direkt an sondern der Umweg über den String? Das wäre doch viel einfacher.
    Durch dass umsetsen nach ein string konte ich dia wert mit das % zeichen zentrieren in das Ausgave feld.
    Ich habe die code noch etwas geanderd zo das ich die Real wert mit ein ziffer hunten die komma und das % ziechen in das Ausgabe feld bekom. zb "12.3 %"
    Und viele dank fur die code.
    Code:
    float getal;
    char *uit = SysMalloc(50); /* Speicher für 50 chars reservieren */
    getal = GetTagFloat("TestFloat");
    sprintf(uit, "  %.1f % %", getal);
    return uit;

    Gruss,

    Joop

Ähnliche Themen

  1. Antworten: 4
    Letzter Beitrag: 16.10.2012, 20:38
  2. Antworten: 9
    Letzter Beitrag: 26.06.2012, 15:59
  3. Antworten: 0
    Letzter Beitrag: 04.06.2010, 09:55
  4. T177A E/A Feld mit String-Variable
    Von magmaa im Forum HMI
    Antworten: 8
    Letzter Beitrag: 15.05.2009, 08:43
  5. Antworten: 0
    Letzter Beitrag: 17.11.2006, 12:16

Lesezeichen

Berechtigungen

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