NEWS
eigene Funktion in Blockly
-
Hallo zusammen, hat von euch schon mal jemand eine eigene Funktion in Blockly erstellt?
Ich möchte gerne meinen eigenen Funktionsbaustein erstellen welchen ich nur mit ein und Ausgangsvariablen parametriere und der Rest passiert dann in dem Baustein intern. Geht so etwas überhaupt?danke!
Grüße
-
@jan_xx Was soll die Funktion denn machen?
-
@mcu
Ich würde gerne eine Funktion erstellen die ich von allen anderen Programmen aus nutzen kann.(Parametrierter Bausteinaufruf bei SPS z.B.) Als Eingang würde ich das Eingangsbit und die Zeiten mit übergeben und als Ausgangparameter den entsprechenden Schaltausgang bzw. Variable. Das ganze sollte dann irgendwie Global funktionieren. Anbei mal als Beispiel das Blockly was ich dann gerne als Funktion nutzen würde....
-
@jan_xx sagte: die Zeiten mit übergeben
Mit Timern funktioniert eine globale Blockly-Funktion nicht, da jeder aufrufende Prozess seine eigenen Timer benötigt.
-
@paul53
okay gibt es hier vielleicht eine andere Lösung?Ist es nicht irgendwie möglich den Zeitwert als Variable an den timeout zu übergeben?
-
@jan_xx sagte in eigene Funktion in Blockly:
Ich würde gerne eine Funktion erstellen die ich von allen anderen Programmen aus nutzen kann
Dazu muss man sich mal vergegenwärtigen, wie globale Funktionen funktionieren:
Beim Start eines "normalen" (nicht globalen) Script wird der JS-Code sämtlicher globaler Scripte an den Anfang des zu startenden Script kopiert.Wenn man jetzt noch in Betracht zieht, dass:
@paul53 sagte in eigene Funktion in Blockly:
jeder aufrufende Prozess seine eigenen Timer benötigt
... wird schnell klar: Das wird ein nahezu aussichtloses Unterfangen.
Beim Einsatz globaler Funktionen muss man eh schon höllisch aufpassen, was man da tut. Da noch mit Timeouts hantieren zu wollen, endet schnell in der Hölle.Ich will nicht ganz ausschließen, dass das technisch irgendwie zu lösen wäre.
Aber Aufwand und Nutzen stehen dann wohl kaum in einem sinnvollen Verhältnis.
Vielleicht können die Spezialisten ein paar Details zur technischen Möglichkeit liefern. -
@codierknecht sagte in eigene Funktion in Blockly:
@jan_xx sagte in eigene Funktion in Blockly:
Ich würde gerne eine Funktion erstellen die ich von allen anderen Programmen aus nutzen kann
Dazu muss man sich mal vergegenwärtigen, wie globale Funktionen funktionieren:
Beim Start eines "normalen" (nicht globalen) Script wird der JS-Code sämtlicher globaler Scripte an den Anfang des zu startenden Script kopiert.Wenn man jetzt noch in Betracht zieht, dass:
@paul53 sagte in eigene Funktion in Blockly:
jeder aufrufende Prozess seine eigenen Timer benötigt
... wird schnell klar: Das wird ein nahezu aussichtloses Unterfangen.
Beim Einsatz globaler Funktionen muss man eh schon höllisch aufpassen, was man da tut. Da noch mit Timeouts hantieren zu wollen, endet schnell in der Hölle.So einfach würde ich das nicht sehen. Prinzipiell ist es kein Problem wenn in einem globalen Skript nur Funktionen definiert werden, die aber nur etwas Machen wenn sie aufgerufen werden. Da kann man gerne auch mit Timern / Timeouts und so weiter hantieren - da sie im Kontext des aufrufenden Skriptes laufen ist alles sauber.
Wichtig ist halt das das globale Skript wirklich nur Funktionen (und ggf. Klassen) definiert und selber nichts macht.
Das ist in JS überhaupt kein problem. In Blockly sieht die Sache anders aus - da hast du im Editor keinen Zugriff auf irgendwelche 'Funktion' Blöcke für die im globalen Skript definierten Funktionen. Ob das trotzdem geht wage ich mal zu bezweifeln.
A.
-
@asgothian sagte: auch mit Timern / Timeouts und so weiter hantieren - da sie im Kontext des aufrufenden Skriptes laufen ist alles sauber.
... nur, wenn die Funktion im gleichen Skript nicht mehrmals aufgerufen wird.
@asgothian sagte in eigene Funktion in Blockly:
im Editor keinen Zugriff auf irgendwelche 'Funktion' Blöcke für die im globalen Skript definierten Funktionen. Ob das trotzdem geht wage ich mal zu bezweifeln.
Das geht über den Umweg eines JS-Funktions-Blockes, in dem wiederum die globale Funktion aufgerufen wird.
@asgothian sagte in eigene Funktion in Blockly:
kein Problem wenn in einem globalen Skript nur Funktionen definiert werden
... aber keine Trigger!