Download - IP-Symcon
Download - IP-Symcon Download - IP-Symcon
IPS_SemaphoreEnterboolean IPS_SemaphoreEnter ( string $Name , integer $Wartezeit )ParameterlisteNameWartezeitName, der die Semaphore beschreibtMillisekunden, die gewartet wird, bis der Befehl abbrichtRückgabewerteTRUE, wenn die Semaphore betreten wurde. FALSE, wenn die Semaphore vor Ablauf der Wartezeit nicht betretenwerden konnteBeschreibungDieser Befehl setzt ein Semaphor (ein Zeichen mit Signalwirkung), das dazu verwendet werden kann, den Start andererSkripte zu verhindern. Ein Skript kann sich so vor konkurrierenden anderen Skripten schützen und natürlich auch voranderen Instanzen von sich selbst.Der Befehl versucht, das Semaphor mit dem Namen SemaphorName zu setzen. Existiert das Semaphor bereits, wird dieAbarbeitung des Skripts für die Zeitdauer Wartezeit (in Millisekunden) ausgesetz. Danach wird noch ein weitererVersuch unternommen.In IP-Symcon können grundsätzlich mehrere Skripte gleichzeitig laufen. Solange ein Skript keinen exklusiven Zugriff aufVariablen oder System-Ressourcen benötigt, stellt dieser Fall kein Problem dar. Falls aber ein exklusiver Zugriffunumgänglich ist, kann mit dem Befehl ein Semaphor gesetzt werden. Der Befehl prüft zuerst, ob das Semaphor mit demangegebenen Namen bereits gesetzt ist. Existiert es noch nicht, wird es durch den Befehl gesetzt und liefert TRUE alsRückmeldung. Alle anderen Skripte, die danach versuchen das selbe Semaphor zu setzen, müssen eine Warteschleife derDauer Wartezeit durchlaufen. Nach Ablauf der Wartezeit versucht der Befehl erneut das Semaphor zu setzen. Ist er dabeierfolgreich, wird TRUE zurückgemeldet, andernfalls FALSE. Wenn man gewährleisten will, dass während der Laufzeiteines Skripts die von ihm verwendeten Daten nicht von anderen, gleichzeitig laufenden Skripten verfälscht werden, kannman diesen Befehl verwenden, um sich exklusiven Zugriff zu sichern.Bei der Verwendung dieses Befehls ist darauf zu achten, dass das Semaphor möglichst bald wieder zurückgesetzt wird.Beispielif (IPS_SemaphoreEnter("KritischerPunkt", 1000)){// ...Kritische Befehle ausführen//Semaphore wieder freigeben!IPS_SemaphoreLeave("KritischerPunkt");}else{// ...Keine ausführung Möglich. Ein anderes Skript nutzt den "KritischenPunkt"// für länger als 1 Sekunde, sodass unsere Wartezeit überschritten wird.}
IPS_SemaphoreLeaveboolean IPS_SemaphoreLeave ( string $Name )ParameterlisteNameName, der die Semaphore beschreibt.RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDieser Befehl löscht das zuvor mit IPS_SemaphoreEnter gesetzte Semaphor wieder.Beispiel//Siehe IPS_SemaphoreEnter()
- Seite 425 und 426: }break;case SC_DIRECTION_DOWN:MXC_S
- Seite 427 und 428: case "{EE4A81C6-5C90-4DB7-AD2F-F6BB
- Seite 429 und 430: SC_MoveDownboolean SC_MoveDown ( in
- Seite 431 und 432: SC_Stopboolean SC_Stop ( integer $I
- Seite 433 und 434: Event ControlDieses Modul erlaubt d
- Seite 435 und 436: DatenbankwiederherstellungUnter gew
- Seite 437 und 438: AC_GetLoggedValuesBenötigt: IP-Sym
- Seite 439 und 440: AC_GetAggregatedValuesBenötigt: IP
- Seite 441 und 442: Heating ControlBeschreibungDas Heiz
- Seite 443 und 444: Hysterese: http://de.wikipedia.org/
- Seite 445 und 446: Notification ControlDas Notificatio
- Seite 447 und 448: WebServerDer WebServer in IP-Symcon
- Seite 449 und 450: RRD_ExexuteDiese Funktion wurde mit
- Seite 451 und 452: GetValueBooleanboolean GetValueBool
- Seite 453 und 454: GetValueFloatfloat GetValueFloat (
- Seite 455 und 456: GetValueFormattedstring GetValueFor
- Seite 457 und 458: SetValueBooleanboolean SetValueBool
- Seite 459 und 460: SetValueFloatboolean SetValueFloat
- Seite 461 und 462: IPS_GetKernelDirstring IPS_GetKerne
- Seite 463 und 464: IPS_GetUptimefloat IPS_GetUptime (
- Seite 465 und 466: IPS_FunctionExistsBenötigt: IP-Sym
- Seite 467 und 468: IPS_GetFunctionListBenötigt: IP-Sy
- Seite 469 und 470: IPS_RunScriptboolean IPS_RunScript
- Seite 471 und 472: IPS_RunScriptWaitstring IPS_RunScri
- Seite 473 und 474: IPS_Executeboolean IPS_Execute ( st
- Seite 475: IPS_Sleepboolean IPS_Sleep ( intege
- Seite 479 und 480: IPS_SetIdentBenötigt: IP-Symcon >=
- Seite 481 und 482: IPS_SetInfoboolean IPS_SetInfo ( in
- Seite 483 und 484: IPS_SetPositionBenötigt: IP-Symcon
- Seite 485 und 486: IPS_ObjectExistsboolean IPS_ObjectE
- Seite 487 und 488: )*/[ObjectInfo] => Nutzt USB Soundk
- Seite 489 und 490: IPS_GetObjectIDByNameinteger IPS_Ge
- Seite 491 und 492: IPS_HasChildrenboolean IPS_HasChild
- Seite 493 und 494: IPS_IsPersistentDiese Funktion soll
- Seite 495 und 496: IPS_GetNamestring IPS_GetName ( int
- Seite 497 und 498: IPS_GetLocationstring IPS_GetLocati
- Seite 499 und 500: IPS_DeleteCategoryboolean IPS_Delet
- Seite 501 und 502: IPS_GetCategoryListboolean IPS_GetC
- Seite 503 und 504: IPS_CreateInstanceinteger IPS_Creat
- Seite 505 und 506: IPS_InstanceExistsboolean IPS_Insta
- Seite 507 und 508: )*/[ModuleID] => {48FCFDC1-11A5-430
- Seite 509 und 510: IPS_GetInstanceListByModuleTypearra
- Seite 511 und 512: IPS_GetInstanceIDByNameinteger IPS_
- Seite 513 und 514: IPS_HasInstanceChildrenDiese Funkti
- Seite 515 und 516: IPS_GetInstanceChildrenIDsDiese Fun
- Seite 517 und 518: IPS_DisconnectInstanceboolean IPS_D
- Seite 519 und 520: IPS_GetCompatibleInstancesboolean I
- Seite 521 und 522: IPS_ResetChangesboolean IPS_ResetCh
- Seite 523 und 524: IPS_SetPropertyBenötigt: IP-Symcon
- Seite 525 und 526: Eigenschaft Typ StandardwertEIB Gat
<strong>IP</strong>S_SemaphoreEnterboolean <strong>IP</strong>S_SemaphoreEnter ( string $Name , integer $Wartezeit )ParameterlisteNameWartezeitName, der die Semaphore beschreibtMillisekunden, die gewartet wird, bis der Befehl abbrichtRückgabewerteTRUE, wenn die Semaphore betreten wurde. FALSE, wenn die Semaphore vor Ablauf der Wartezeit nicht betretenwerden konnteBeschreibungDieser Befehl setzt ein Semaphor (ein Zeichen mit Signalwirkung), das dazu verwendet werden kann, den Start andererSkripte zu verhindern. Ein Skript kann sich so vor konkurrierenden anderen Skripten schützen und natürlich auch voranderen Instanzen von sich selbst.Der Befehl versucht, das Semaphor mit dem Namen SemaphorName zu setzen. Existiert das Semaphor bereits, wird dieAbarbeitung des Skripts für die Zeitdauer Wartezeit (in Millisekunden) ausgesetz. Danach wird noch ein weitererVersuch unternommen.In <strong>IP</strong>-<strong>Symcon</strong> können grundsätzlich mehrere Skripte gleichzeitig laufen. Solange ein Skript keinen exklusiven Zugriff aufVariablen oder System-Ressourcen benötigt, stellt dieser Fall kein Problem dar. Falls aber ein exklusiver Zugriffunumgänglich ist, kann mit dem Befehl ein Semaphor gesetzt werden. Der Befehl prüft zuerst, ob das Semaphor mit demangegebenen Namen bereits gesetzt ist. Existiert es noch nicht, wird es durch den Befehl gesetzt und liefert TRUE alsRückmeldung. Alle anderen Skripte, die danach versuchen das selbe Semaphor zu setzen, müssen eine Warteschleife derDauer Wartezeit durchlaufen. Nach Ablauf der Wartezeit versucht der Befehl erneut das Semaphor zu setzen. Ist er dabeierfolgreich, wird TRUE zurückgemeldet, andernfalls FALSE. Wenn man gewährleisten will, dass während der Laufzeiteines Skripts die von ihm verwendeten Daten nicht von anderen, gleichzeitig laufenden Skripten verfälscht werden, kannman diesen Befehl verwenden, um sich exklusiven Zugriff zu sichern.Bei der Verwendung dieses Befehls ist darauf zu achten, dass das Semaphor möglichst bald wieder zurückgesetzt wird.Beispielif (<strong>IP</strong>S_SemaphoreEnter("KritischerPunkt", 1000)){// ...Kritische Befehle ausführen//Semaphore wieder freigeben!<strong>IP</strong>S_SemaphoreLeave("KritischerPunkt");}else{// ...Keine ausführung Möglich. Ein anderes Skript nutzt den "KritischenPunkt"// für länger als 1 Sekunde, sodass unsere Wartezeit überschritten wird.}