Modul Verriegelung (keine Mehrfach Ausführung möglich)

  • Suche eine Lösung und habe keine Idee um ein Modul nach Start sich selbst verriegelt und erst am Ende nach Durchlauf sich wieder frei gibt.


    Hintergrund ist das gewünscht ist die Tür auf Knopfdruck ohne Gegensprechen zu öffnen.
    Da das aber nach einem Klingel Ruf mehrer machen (Tür öffnen drücken) gibt es Probleme.
    Die Idee ist es das Modul wenn Aufgerufen erst wieder aufrufbar zu machen wenn es fertig ist, ev. mit einer zeit am ende von z.B. 2-3 Sekunden.


    Das Modul sieht jetzt so aus:
    Modul.jpg



    Geht das und ggf. wie?

  • Das einfachste wäre, wenn das Modul zu Beginn der Ausführung eine Variable im Modul- oder Instance-Scope setzt, sofern sie nicht schon existiert.
    Existiert die Variable, beendet sich die Modulausführung. Ansonsten wird die Variable am Ende der Ausführung gelöscht.


    Das Verfahren ist nicht 100%ig, da man ansonsten noch ein Locking an einem globalen Monitorobjekt implementieren müßte, aber für die meisten Fälle dürfte es ausreichend sein.


    Ganz allgemein: https://en.wikipedia.org/wiki/…tation_of_Synchronization

  • Danke Fabian, den Ansatz verstehe ich,
    habe aber gerade mal im Designer probiert und bekomme es nicht hin.
    Hast Du hier ein "Code Beispiel"?
    Gruß Hans-Jörg

  • Hallo Hans-Jörg


    Im Expert-Mode findest du unter "Variables" jeweils GetVariableValue/SetVariableValue


    Damit kannst du eine Prüfung einbauen.


    Code
    GetVariableValue('Instance','FLAG_ISRUNNING') --> _value //Den Inhalt der Variable FLAG_ISRUNNING abholen. 
    if((empty(_value) || !(_value))) 	  	 // Wenn die Variable noch leer ist, weil sie noch nie gesetzt wurde, oder false
       Log('DEBUG',['Starte Modul']) 	  	
       SetVariableValue('Instance','FLAG_ISRUNNING','true') 	//FLAG_ISRUNNING auf true setzen  	 
       CallPhoneNumber('1337','','','30',---) --> _success 	//Zeugs ausführen 
        Hangup() 	  	 
        SetVariableValue('Instance','FLAG_ISRUNNING','false') 	 //Modul ist fertig. FLAG_ISRUNNING wieder auf false setzen 
    else 	 //Falls die Variable nicht leer ist, oder auf true steht
          Log('DEBUG',[Modul läuft bereits])


    MfG


    Fabian

  • Gibt es da eventuell ein Modul was von jemand geschrieben wurde für folgende Funktion :


    Kunde möchte gerne Türöffnen ohne das ein Anruf von der Türsprechstelle kommt, da die Zentrale sieht wer kommt und wenn sie gerade telefoniert und z.B. Paketdienst kommt , einfach eine Taste drücken und der Türöffner wird betätigt.
    Ist eine Siedle Doorcom , wo es durch Anwahl der Türsprechstelle und #61 der Türöffner funktioniert.
    Der Kunde möchte es aber auf einer Taste haben und es soll während dem Gespräch sein.

  • Gibt es da eventuell ein Modul was von jemand geschrieben wurde für folgende Funktion :


    Kunde möchte gerne Türöffnen ohne das ein Anruf von der Türsprechstelle kommt, da die Zentrale sieht wer kommt und wenn sie gerade telefoniert und z.B. Paketdienst kommt , einfach eine Taste drücken und der Türöffner wird betätigt.
    Ist eine Siedle Doorcom , wo es durch Anwahl der Türsprechstelle und #61 der Türöffner funktioniert.
    Der Kunde möchte es aber auf einer Taste haben und es soll während dem Gespräch sein.


    Hi tuner,


    diese Frage hat leider überhaupt nichts mit dem vorhandenen Thread zu tun. Bitte für Fragen zu komplett anderen Themen entweder einen passenden alten Thread suchen, oder neuen Thread im passenden Unterforum aufmachen. Sonst wird es einfach für alle zu unübersichtlich und es werden unsinnige Benachrichtigungen zu abonnierten Themen verschickt. Danke für zukünftige Beachtung! :)


    Auch Doppel-Posts des gleichen Themas in mehreren Threads sind eher kontraproduktiv.


    Der gestern von Dir zuerst gewählte Thread war eigentlich schon ganz passend. Bitte verfolge das Thema dort weiter, merci!


    Gruß
    Andreas

    Presales Manager


    STARFACE GmbH | Adlerstraße 61 | 76137 Karlsruhe | www.starface.com

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!