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

Ergebnis 1 bis 3 von 3

Thema: Anziegeproblem Statischer Text mit C-Dialog

  1. #1
    Registriert seit
    05.05.2011
    Beiträge
    22
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    MoinMoin aus Hamburg,

    ich stehe vor einem kleinem Problem. Aaalso ich versuche Daten (Byte) (minuten,Stunden,sekunden) aus der SPS zu laden und in meiner WInCC VIsualisierung als Statischen Text anzuzeigen.

    Hierfür habe ich die Variablen in WinCC angelegt und den Statischen Text mit einem C-Dialog belästigt. Alles schön und gut nur LEIDER sehe ich in meinen Statischen Text in der Runtime nur ein kleines Quadrat.
    Was ich sehen will ist folgendes: 00:00:00 Den Code habe ich am Ende mal reinkopiert. Am Ende vom Code lasse ich mir mit printf meine erzeugte Uhrzeit im Diag fenster anzeige. DOrt ist sie verrückter Weise korrekt...
    Irgendwie schaffe ich es einfach nicht. Wäre über Hilfe sehr sehr Dankbar.

    Mit freundlichen Grüßen

    Pascale

    Unbenannt.PNGUnbenannt2.jpg
    Zitieren Zitieren Anziegeproblem Statischer Text mit C-Dialog  

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

    Standard

    Du hast zwei Fehler:

    1. Dein Char-Array ist zu kurz. Bei einem C-String benötigst du immer noch ein Byte mehr für die abschließende Null (\0) als Endekennung des Strings.

    2. Du gibst einen Zeiger auf das Char-Array zurück. Dieses ist aber nur innerhalb der Funktion gültig weil es nur auf dem Stack abgelegt wird. D.h. wenn die Graphics Runtime die Funktion aufgerufen hatt und auf das Char-Array zugreifen will, ist dieser Speicher nicht mehr gültig.

    Um das Problem mit 2 zu beheben, gibt es bei WinCC eine interne Funktion zur Speicherreservierung namens Sysmalloc. Speicher den du mit dieser Funktion anforderst musst du nicht wie sonst bei malloc üblich selber freigeben, sondern das macht die WinCC Runtime intern für dich.

    Du müsstest bei dir dementsprechend "char t[8]" durch
    Code:
    char *t = SysMalloc(9);
    ersetzen.

    Deine if-Abfragen um führende Nullen darzustellen kannst du auch einsparen, indem du einen passenden Formatspezifizierer für sprintf verwendest.
    Ein
    Code:
    sprintf(t, "%02d:%02d:%02d", std, min, sec);
    macht alles in einem Rutsch.

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

    Pascale (18.08.2014)

  4. #3
    Registriert seit
    05.03.2014
    Beiträge
    9
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Thomas,

    großes Dankeschön für deine Hilfe. Nun klappt es wunderbar...mir wurde gesagt das es vorher schonmal Funktioniert hat, das war dann wohl mal locker gelogen

    Danke nochmal und ne Schöne Woche

    Pascale

Ähnliche Themen

  1. Com Text und OP15B. Wie funktioniert Com Text???
    Von MeisterLampe81 im Forum HMI
    Antworten: 6
    Letzter Beitrag: 24.11.2013, 12:57
  2. Rezeptur mit zusätzlichem Text
    Von Outrider im Forum HMI
    Antworten: 2
    Letzter Beitrag: 02.03.2013, 06:23
  3. WinCC Flexible smartservice. Logon dialog.
    Von JesperMP im Forum HMI
    Antworten: 6
    Letzter Beitrag: 17.11.2012, 05:39
  4. Text mit Variablen Prefix?
    Von ottopaul im Forum HMI
    Antworten: 0
    Letzter Beitrag: 13.01.2009, 13:43
  5. Wincc Flexible Dateiauswahl-Dialog
    Von repök im Forum HMI
    Antworten: 3
    Letzter Beitrag: 29.11.2006, 22:55

Lesezeichen

Berechtigungen

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