-> Hier kostenlos registrieren
Hallo zusammen,
ich mache gerade mein erstes Projekt mit Unified als solches. Dabei ist mir das Thema schon fast zu peinlich um es hier zu stellen, aber ich komme nicht weiter.
Zur Zielsetzung und was bisher unternommen wurde:
Code zur Umschaltung.
Code zur Widerherstellung der Sprache beim "Bild-Aufgebaut-Ereignis".
Meine Fragen:
1. Was kann ich machen, dass dieser Button für seine Grafikliste die Systemvariable "@CurrentLanguage" akzeptiert?
2. Wie muss ich diese Code(s) ändern, dass der Vollzug des Sprachwechsels und die damit verbundene Änderung der Variabel "@CurrentLanguage" zwingend vor dem Schreiben der PLC/HMI Variablen passiert?
Ich bedanke mich für Eure Aufmerksamkeit.
ich mache gerade mein erstes Projekt mit Unified als solches. Dabei ist mir das Thema schon fast zu peinlich um es hier zu stellen, aber ich komme nicht weiter.
Zur Zielsetzung und was bisher unternommen wurde:
- Button, der die verfügbaren Sprachen durchtoggelt.
- Button mit ToggleLanguage() Befehl bzw. Nutzung der "WechsleSprache" Funktion.
- Button soll die aktuelle Fahne der Sprache anzeigen.
- Grafikliste mit Fahnen.
- Projektunabhängige Benutzbarkeit.
- Fahnengrafiken bekommen die Indizes der LCIDs der Sprachen
- 1. Versuch die HMI Systemvariable "@CurrentLanguage" zu verwenden
- Resultat: Der Inhalt der Variable lässt sich zwar als IO Wert anzeigen, die Nutzung der Variable zur Dynamisierung der Fahne/des Buttons taugt nicht.
- 2. Versuch: Arbeiten mit Hilfsvariablen:
- Hilfsvariablen im HMI angelegt für den LCID-Code als interne Variable und als PLC-Variable angelegt.
- Java-Skript Code geschrieben um zuerst bei Tastendruck die Sprache umzuschalten um dann die Werte in den angelegten Variablen zu speichern.
- Resultat: Funktioniert auf manchen Geräten ganz gut (9/10 Versuche), bei anderen eher schlecht (1/2 Versuche). Sprache wird weitergeschaltet, aber die Variablen übernehmen den Wert der vorherigen Sprache.
- Code weiter unten.
- HMI soll aufstarten/Browserfenster neu laden mit zuletzt eingestellter Sprache - was zumindest standardmäßig nicht tat.
- Nutzung der internen HMI-Variable bzw. der PLC-Variable zur Widerherstellung der letzten Sprache via Java-Skript
- Funktioniert soweit. Nutztung bei "Bild aufgebaut".
- Code weiter unten.
- Nutzung der internen HMI-Variable bzw. der PLC-Variable zur Widerherstellung der letzten Sprache via Java-Skript
Code zur Umschaltung.
Java:
export function Funktion_LCID_() {
// 1. Toggle Language.
HMIRuntime.UI.SysFct.ToggleLanguage();
// 2. Mirror back from system tag to HMI/PLC tag.
let LCID = Tags("@CurrentLanguage").Read();
Tags("HMI_LanguageLCID_HMI").Write(LCID);
Tags("HMI_LanguageLCID_PLC").Write(LCID);
}
Code zur Widerherstellung der Sprache beim "Bild-Aufgebaut-Ereignis".
Javascript:
export function Funktion_Restore_LCID() {
if (HMIRuntime.Tags.SysFct.GetTagValue("HMI_LanguageLCID_PLC") != 0)
{
HMIRuntime.UI.SysFct.SetLanguage(HMIRuntime.Tags.SysFct.GetTagValue("HMI_LanguageLCID_PLC"));
}
else if (HMIRuntime.Tags.SysFct.GetTagValue("HMI_LanguageLCID_PLC") != 0)
{
HMIRuntime.UI.SysFct.SetLanguage(HMIRuntime.Tags.SysFct.GetTagValue("HMI_LanguageLCID_HMI"));
}
}
Meine Fragen:
1. Was kann ich machen, dass dieser Button für seine Grafikliste die Systemvariable "@CurrentLanguage" akzeptiert?
2. Wie muss ich diese Code(s) ändern, dass der Vollzug des Sprachwechsels und die damit verbundene Änderung der Variabel "@CurrentLanguage" zwingend vor dem Schreiben der PLC/HMI Variablen passiert?
Ich bedanke mich für Eure Aufmerksamkeit.