WinCC WinCC 7.5 dynamische Bilder aus Ordner

Michael.RO

Level-1
Beiträge
2
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich möchte in WinCC eine Grafik in einem Bild dynamisch haben.
Je nach dem Namen aus der SPS-Variable "Material_Nummer_W_8" soll das dazugehörige Bild mit dem Namen aus der Variable + der Dateiendung ".jpg" angezeigt werden. die Bilder befinden sich im Ordner "C:\\Produktbilder". Ist ein Bild nicht vorhanden, soll das default bild angezeigt werden

Leider bekomme ich in der C-Aktion immer Fehlermeldungen. Das Script habe ich mit KI generiert, da es mir etwas zu steil ist. vielleicht denke ich auch zu kompliziert

danke


#include "apdefap.h"
char _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
// 1. Variablendeklaration (WinCC 7.5 erfordert dies am Anfang)
char bilderPfad[256];
char defaultBild[256];
char bildPfadKomplett[256];
char materialNummer[100];
FILE* file;
DWORD dwLen = sizeof(materialNummer);
// 2. Pfade initialisieren (Achtung: Doppelbackslash!)
strcpy(bilderPfad, "C:\\Produktbilder\\");
strcpy(defaultBild, "C:\\Produktbilder\\default.jpg");
// 3. SPS-Variable auslesen (WinCC 7.5 kompatible Syntax)
GetTagChar("Material_Nummer_W_8", materialNummer);
// 4. Bildpfad zusammensetzen
sprintf(bildPfadKomplett, "%s%s.jpg", bilderPfad, materialNummer);
// 5. Bildprüfung durchführen
file = fopen(bildPfadKomplett, "r");
if (file != NULL) {
fclose(file);
SetPropChar(lpszPictureName, lpszObjectName, "PictureName", bildPfadKomplett);
}
else {
SetPropChar(lpszPictureName, lpszObjectName, "PictureName", defaultBild);
}
return 0; // Rückgabewert erforderlich, da _main als char deklariert ist
}
 
Hallo nochmals,
ich habe einen Funktionierenden Code geschafft für den WinCC Webbrowser.
nun jedoch die Frage, wie kann ich das bild skalieren?

#include "apdefap.h"
char* _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
static char bildPfad[256];
static char fallbackPfad[256];
WORD materialNr = GetTagWord("MATERIAL_NUMMER_W_8");
FILE* file;

// Pfad zum gewünschten Bild
if (strcmp(GetTagChar("@RM_MASTER_NAME"), "ATKNBWSERVER01") == 0)
{
sprintf(bildPfad, "file:\\\\ATKNBWSERVER01\\WinCC_Runtime_files\\Produktbilder\\%d.jpg", materialNr);
}
else
{
sprintf(bildPfad, "file:\\\\ATKNBWSERVER02\\WinCC_Runtime_files\\Produktbilder\\%d.jpg", materialNr);
}

// Prüfen, ob das Bild existiert
file = fopen(bildPfad + 5, "r"); // "+5" überspringt "file:" für fopen
if (file)
{
fclose(file);
return bildPfad;
}
else
{
// Fallback-Bild verwenden
sprintf(fallbackPfad, "file:\\\\ATKNBWSERVER01\\WinCC_Runtime_files\\Produktbilder\\default.jpg");
return fallbackPfad;
}
}
 
Zurück
Oben