Alle Bilder eines HMI-Geräts exportieren - TIAPortal

TIA Portal Openness: API für die Automatisierung von Engineering-Workflows

ft:publication_title
TIA Portal Openness: API für die Automatisierung von Engineering-Workflows
Product
TIAPortal
Version
V20
Publication date
01/2025
Language
de-DE
Alle Bilder eines HMI-Geräts exportieren

Voraussetzungen

Einleitung

Um alle aggregierten Bilder aller benutzerdefinierten Ordner eines HMI-Geräts zu exportieren, ist ein anderer Programmcode erforderlich.

Programmcode: Alle Bilder eines Geräts exportieren

Um die Bilder eines benutzerdefinierten Bilderordners eines HMI-Geräts und den Bildersystemordner zu exportieren, ändern Sie folgenden Programmcode:

Kopiert den nachfolgenden Programmcode in die Zwischenablage.

using System;

using Siemens.Engineering;

using Siemens.Engineering.HW;

using Siemens.Engineering.HW.Features;

using Siemens.Engineering.SW;

using Siemens.Engineering.SW.Blocks;

using Siemens.Engineering.SW.ExternalSources;

using Siemens.Engineering.SW.Tags;

using Siemens.Engineering.SW.Types;

using Siemens.Engineering.Hmi;

using HmiTarget = Siemens.Engineering.Hmi.HmiTarget;

using Siemens.Engineering.Hmi.Tag;

using Siemens.Engineering.Hmi.Screen;

using Siemens.Engineering.Hmi.Cycle;

using Siemens.Engineering.Hmi.Communication;

using Siemens.Engineering.Hmi.Globalization;

using Siemens.Engineering.Hmi.TextGraphicList;

using Siemens.Engineering.Hmi.RuntimeScripting;

using System.Collections.Generic;

using Siemens.Engineering.Compiler;

using Siemens.Engineering.Library;

using System.IO; using System.Security;

namespace ExportAllScreensOfHMIDevice

{

internal class Program

{

private static void Main(string[] args)

{

...

}

private static void ExportAllScreensOfDevice(string rootPath, HmiTarget hmiTarget)

{

DirectoryInfo info = new DirectoryInfo(rootPath);

info.Create();

// Export the ScreenFolder recursive

string screenPath = Path.Combine(rootPath, "Screens");

info = new DirectoryInfo(screenPath);

info.Create();

ExportScreens(screenPath, hmiTarget);

}

// Export the screens of a user-defined screen folder of an HMI device and the screen system folder

private static void ExportScreensOfDevice(HmiTarget hmiTarget)

{

ScreenUserFolder folder = hmiTarget.ScreenFolder.Folders.Find("MyScreenFolder");

//or ScreenSystemFolder folder = hmiTarget.ScreenFolder;

ScreenComposition screens = folder.Screens;

foreach(Screen screen in screens)

{

FileInfo info = new FileInfo(string.Format(@"D:\Samples\Screens\{0}\{1}.xml", folder.Name, screen.Name));

screen.Export(info, ExportOptions.WithDefaults);

}

}

// Exporting all screens of a device independent of the user

public static void ExportScreens(string screenPath, HmiTarget target)

{

foreach(Screen screen in target.ScreenFolder.Screens)

{

screen.Export(new FileInfo(Path.Combine(screenPath, screen.Name + ".xml")), ExportOptions.WithDefaults);

}

foreach(ScreenUserFolder subfolder in target.ScreenFolder.Folders)

{

ExportScreenUserFolder(Path.Combine(screenPath, folder.Name), subfolder.Name);

}

}

private static void ExportScreenUserFolder(string screenPath,ScreenUserFolder folder )

{

foreach(Screen screen in folder.Screens)

{

screen.Export(new FileInfo(Path.Combine(screenPath, screen.Name + ".xml")), ExportOptions.WithDefaults);

}

foreach(ScreenUserFolder subfolder in folder.Folders)

{

ExportScreenUserFolder(Path.Combine(screenPath, subfolder.Name), subfolder);

}

}

}

}