Sonstiges Anziegeproblem Statischer Text mit C-Dialog

Paco

Level-1
Beiträge
22
Reaktionspunkte
0
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.PNG
Unbenannt2.jpg
 
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.
 
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:cool:

Pascale
 
Zurück
Oben