Ich finde Markus (Ide71) hat es
hier recht gut dargestellt und darauf bezeihe ich mich ja auch in meinem Beitrag #1.
Ich will überhaupt nichts Neues haben und ich glaube einige von Euch, die sich hier beteiligen, haben mich irgendwie falsch verstanden.
Alles soll so bleiben wie es ist. Ich (und Markus mit seinem anderen Post ja auch bereits) wollen lediglich, dass man in einem Customlogik-Code vorbestimmen kann, dass ein Eingang als Parametereingang dargestellt wird, wenn man die Customlogik anlegt.
Dafür finde ich den Ansatz von Robert optimal einfach ein Eingangsmerkmal p (zusätzlich zu a, c, u und x) zu definieren.
["TriggerInterval","Logik triggered alle x Sekunden", "$interval",
"p"]
Desweiteren sollte ein "p"-Input sich meines Erachtens wie eine c verhalten. Da ein Parameter ja nicht dynmisch über externe Signale geändert wird, wäre ein c-Verhalten quasi ein u-Verhalten, ausser jemand ändert den Wert des Parameters im Doktormodus. Im Gegensatz zum u könnte man dann im Doktormodus damit dann schneller testen. Aber letztlich kann ich auch gut mit einem reinen u-Verhalten leben.
Da man im Custom-Code immer einen Defaultwert für ein Level definiert (es geht garnicht ohne), sollte auch ein p-Input in der Oberfläche diesen Defaultwert ausweisen (denn im Code hat er den ja schließlich auch sofort, und dass erkennt nur Jemand, der den Code zu lesen weiß, was beim übernehmen von fremden Code aus dem Forum ja nicht immer gegeben ist).
Beispiel zu meinem Vorschlag:
Code: Alles auswählen
/**
* Beispiel Parameterinput
*/
{
"Input":[
["In","","$In","c"],
["TriggerInterval","Logik triggered alle x Sekunden", "$interval","c"]
],
"Output":[
["Out","","$Out","a"]
],
"Level":[
["$In","bool",false],
["$interval","integer",10],
["$Out","bool",false],
["$ConstTrue","bool",true]
],
"Module":[
["Clocksignal","$ConstTRUE",0,"$interval"],
["And" , ["-$Out"], "$Out"]
]
}
Übernimmt jemand diesen Code ab, so würde das wie folgt aussehen:
Anmerkung 2020-08-27 154751.jpg
Speichert man die Logik, würde man (als Einsteiger) erwarten, dass nichts passiert und man würde sich sehr wundern, dass die Logik wie von Geeisterhand alle 10 Sekunden den Ausgang toggled.
Deshalb soll mein Featurerequest folgendes bewirken. Nur durch Ändern des Codes an einer einzigen Stelle (durch setzen des p statt c) am Ende der folgenden Codezeile
Code: Alles auswählen
["TriggerInterval","Logik triggered alle x Sekunden", "$interval","p"]
bewirkt man, dass die Logikzelle wie folgt aussieht:
Anmerkung 2020-08-27 155141.jpg
Der zweite Eingang wird also direkt mit dem im Code eingestellten Default-Wert angelegt. Selbstverständlich kann man ihn auch auf Wunsch mit externen Eingängen verknüpfen, wenn man das will. Es ist ein normaler Eingang. Aber auf diese Weise kann der Schreiberling der Logik dem Nutzer klar erkennbar machen, wie der Eingang ursprünglich geplant war.
Und in diesem Beispiel kann man auch erkennen, warum ich das c-Verhalten besser fände. Ändert jemand im Dok-Modus den Wert von 10 auf 2, dann würde man sich wundern, wenn das nichts ändert. Man müsste hier erst einmal auf dem Input 1 triggern um den Intervall aktiv zu ändern.
Was meint Ihr? Soll ich der FR losfeuern und zum Abstimmen bringen?
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.