NEU! UPGRADE IP 10 verfügbar!
Optimierte Darstellung von VISU Editor und VISU Client - sowie viele weitere Verbesserungen
Infos im Wiki: https://elabnet.atlassian.net/l/cp/8HzePCm3

Insider & Leistungsmerkmale FÜR ALLE freigeschaltet
Ab sofort kann jeder die neue VISU & IFTTT testen. Info: viewtopic.php?f=8&t=5074

Release V 4 am 15. Juni 2024
Es gibt nun einen fixen Termin. Info: viewtopic.php?f=8&t=5117

NEU! Ausführliches Video Tutorial zur IP 10
Jetzt werden alle Fragen beantwortet. Das Video: https://youtu.be/_El-zaC2Rrs

[Frage] [V1.6.0 IP 3] Direkte Verwendung von Zahlen bei Funktionen in Custom-Logik

Informationen und Diskussionen über Logik-Engine und Logik-Editor
Forumsregeln
  • Denke bitte an aussagekräftige Titel und gebe dort auch die [Firmware] an. Wenn ETS oder CometVisu beteiligt sind, dann auch deren Version
  • Bitte mache vollständige Angaben zu Deinem Server, dessen ID und dem Online-Status in Deiner Signatur. Hilfreich ist oft auch die Beschreibung der angeschlossener Hardware sowie die verwendeten Protokolle
  • Beschreibe Dein Projekt und Dein Problem bitte vollständig. Achte bitte darauf, dass auf Screenshots die Statusleiste sichtbar ist
  • Bitte sei stets freundlich und wohlwollend, bleibe beim Thema und unterschreibe mit deinem Vornamen. Bitte lese alle Regeln, die Du hier findest: https://wiki.timberwolf.io/Forenregeln
Antworten
Benutzeravatar

Ersteller
Eraser
Reactions:
Beiträge: 650
Registriert: So Aug 12, 2018 1:51 pm
Wohnort: Amstetten, Österreich
Hat sich bedankt: 209 Mal
Danksagung erhalten: 275 Mal

[V1.6.0 IP 3] Direkte Verwendung von Zahlen bei Funktionen in Custom-Logik

#1

Beitrag von Eraser »

Hallo,

ich habe da was im Hinterkopf, dass es einmal der Fall war, dass wenn man Zahlen (0, 1, 2, ...) oder Zustände (True, False) bei einer Funktion in einer Custom-Logik verwendet, dass man diese nicht direkt in die Funktion schreiben soll, sondern dafür vorher Konstanten dafür bei den Levels definieren und dann diese verwenden soll.

Zum Beispiel dass man dies
["And",["$Input","$KonstTrue"],"$Output"]
verwenden soll anstatt von
["And",["$Input",1],"$Output"]
da dies nicht funktioniert.

War das der Fall bei einer älteren TW-Version und ist jetzt nicht mehr der Fall oder doch noch?
Oder galt das nur bei gewissen Funktionen?

Habe mir diese Frage gerade bei folgender Funktion gestellt und ob dies so funktioniert:

["Latch",0,"$Szene","$Freigabe",1]

Wird hier bei Freigabe eine 0 auf die Veriable Szene (Integer) geschrieben?
Geht das auch wenn Szene eine bool-Variable wäre?
Oder muss man unter Level eine Konstante Konst0 mit dem Wert 0 definieren und diese verwenden?
Zuletzt geändert von Eraser am Do Jun 11, 2020 10:51 pm, insgesamt 2-mal geändert.
mfg
Wolfgang

Timberwolf 2500 #151 / VPN offen / Reboot nach Rücksprache
+ PBM #938

fechter65
Reactions:
Beiträge: 207
Registriert: Mo Aug 13, 2018 10:44 am
Hat sich bedankt: 195 Mal
Danksagung erhalten: 143 Mal

#2

Beitrag von fechter65 »

Hallo Wolfgang

Kurz: Ich bin der Meinung, dass Werte weiterhin nur in der Form von "Variablen" an Modulbausteine übergeben werden dürfen.
Meines Wissens gilt folgendes (Auszug aus zwei Texten, die ich erstellt habe, deshalb etwas länglich):

**************
Die Elemente des Modulbaustein-Arrays

Erstes Element ist immer die Modulkennung, d.h. ein in Anführungszeichen gesetzter Text, zum Beispiel “And” oder “Latch”.
Der Modulkennung folgen - in einer vorgegebenen Reihenfolge und jeweils getrennt durch ein Komma - zusätzliche Elemente, welche die Ein- und Ausgänge des Modulbausteins bedienen.

Zur Bedienung der zusätzlichen Ein- und Ausgangselemente müssen in aller Regel Variablen (bspw. "$In" oder "$Out") verwendet werden. Falls an einem Eingangs- oder Ausgangselement mehr als ein Wert übergeben werden kann, werden die Variablen in der Form eines Arrays (bspw. ["$In1", "$In2",... ,"$In_n"]) zusammengefasst oder es wird - anstelle des Arrays - eine Multivariable (bspw. $VAR<Input!>) verwendet.
Der Datentyp der jeweiligen Variablen muss den Vorgaben des Modulbausteins für dieses Ein- oder Ausgangselement entsprechen.

Vom Grundsatz, dass den Elementen eines Modulbausteins-Arrays nur Variablen übergeben werden dürfen, kann in folgenden Fällen abgewichen werden:
  • es darf eine blosse 0 (d.h. ohne Anführungszeichen) übergeben werden, wenn ein Eingang des Modulbausteins nicht bedient oder ein Ausgang nicht abgefragt werden soll,
  • bei Optionen wie bspw. beim →Latch-Modulbaustein kann ebenfalls am entsprechenden Eingang direkt eine Integerzahl übergeben werden (im folgenden Beispiel wird der Wert 3 als Option übergeben: ["Latch","$true","$FreigabeWechsel","$Freigabe",3])
Um bequem und einheitlich konstante Werte, wie bspw. TRUE oder FALSE, an Modul-Bausteine zu übergeben, hat es sich bewährt, im LEVEL-Array entsprechende Konstanten als Variablen zu definieren. Diese Praxis ist aber nicht zwingend. Ein Beispiel einer solchen Definition:

Code: Alles auswählen

"Level": [
// Variablen mit konstanten Werten
    ["$true","bool",true],
    ["$false","bool",false],
// Weitere Variblen 
  ],
*************************

Wird bei einem Multiplexer ein ein mit 0 bezeichneter Eingang selektiert, hängt das Ergebnis am Ausgang vom Datentyp ab:
  • bool: false
  • integer: 0
  • float: 0.0
  • string: "" (d.h. Leerstring)
*************************

Gruss
Diego
TW2600 / TW-ID: 87/ VPN offen, booten jederzeit erlaubt
TW2600 / TW-ID: 173/ VPN offen, booten nach Rücksprache
Antworten

Zurück zu „Logikengine & Logik-Editor“