<< Klicken Sie hier um das Inhaltsverzeichnis anzuzeigen >> Navigation: Anleitungen > Steuerbefehl- und Statushandling einrichten > Scripting (CustomCommandHandling) > Scripting Beispiele |
Die Beispiele sollen die Möglichkeiten aufzeigen, und als Anregung für eigene Anwendungen dienen. Folgende Punkte sind dabei ebenfalls zu beachten, auch wenn sie nicht direkt aus den Beispielen ersichtlich sind:
•Grundsätzlich können in jedem Ereignis-Handler Steuerbefehle an den Studio Controller selber und an die externen Module gesendet werden (mit SendInternalCommand und SendMessageToExternalModules).
•Es können immer beliebig viele Steuerbefehle und Statusmeldungen versendet werden (mehrfacher Aufruf von SendXxx ist erlaubt).
•Es ist möglich keinen Steuerbefehl und keine Statusmeldung zu versenden. So können Befehle und Meldungen abgefangen bzw. unterdrückt werden.
•Der erste Parameter der SendXxx-Methoden ist die Verzögerung in Millisekunden, sie kann überall verwendet werden.
•Der Aufruf der SendXxx-Methoden mit einer Verzögerung ist nicht blockierend. Die Befehle werden in eine Warteschlange gestellt und später versendet, die Ausführung des Scriptes wird hingegen unmittelbar fortgesetzt.
Zweck: Zeigt wie eintreffende Steuerbefehle durch andere Befehle ersetzt werden können.
Code im Ereignis-Handler ReceivingCommand:
switch (command)
{
case 10513:
CustomCommandHandler.SendInternalCommand(0, 101011);
handled = true;
break;
case 10523:
CustomCommandHandler.SendInternalCommand(0, 101012);
handled = true;
break;
}
•Trifft der Steuerbefehl 10513 ein, wird er durch den Befehl 101011 ersetzt. Der ursprüngliche Befehl wird nicht weitergeleitet, da handled auf true gesetzt wird.
•Trifft der Steuerbefehl 10523 ein, wird er durch den Befehl 101012 ersetzt. Der ursprüngliche Befehl wird nicht weitergeleitet, da handled auf true gesetzt wird.
Zweck: Zeigt wie beim Eintreffen von Steuerbefehlen zusätzliche Befehle an die externen Module gesendet werden können.
Code im Ereignis-Handler ReceivingCommand:
switch (command)
{
case 101011:
CustomCommandHandler.SendMessageToExternalModules(500, 9999);
break;
case 101012:
CustomCommandHandler.SendMessageToExternalModules(0, -9999);
break;
}
•Trifft der Steuerbefehl 101011 ein, wird der Steuerbefehl 9999 mit einem Offset von 500 Millisekunden an die externen Module gesendet. Der ursprüngliche Befehl wird weitergeleitet (und durchläuft die Ersetzungstabellen), da handled nicht auf true gesetzt wird.
•Trifft der Steuerbefehl 101012 ein, wird der Steuerbefehl -9999 ohne Offset an die externen Module gesendet. Der ursprüngliche Befehl wird weitergeleitet (und durchläuft die Ersetzungstabellen), da handled nicht auf true gesetzt wird.
Zweck: Zeigt die Kombination der beiden vorangehenden Beispiele.
Code im Ereignis-Handler ReceivingCommand:
switch (command)
{
case 10513:
CustomCommandHandler.SendInternalCommand(0, 101011);
CustomCommandHandler.SendMessageToExternalModules(500, 9999);
handled = true;
break;
case 10523:
CustomCommandHandler.SendInternalCommand(0, 101012);
CustomCommandHandler.SendMessageToExternalModules(0, -9999);
handled = true;
break;
}
Die eintreffenden Befehle werden ersetzt, zugleich werden Befehle an die externen Module gesendet, einmal mit und einmal ohne Verzögerung.
Zweck: Zeigt wie eintreffende Steuerbefehle unterdrückt werden können.
Code im Ereignis-Handler ReceivingCommand:
switch (command)
{
case 101011:
case 101012:
handled = true;
break;
}
Werden Steuerbefehle abgefangen, und handled ohne weitere Aktion auf true gesetzt, werden die Befehle nicht weitergeleitet, d.h. sie lösen keine Funktion mehr aus.
Zweck: Zeigt wie Steuerbefehle (Sendeplan oder Type Indication), die der Studio Controller an die externen Module sendet, durch andere Befehle ersetzt werden können.
Code im Ereignis-Handler SendingCommand:
switch (command)
{
case 1111:
CustomCommandHandler.SendMessageToExternalModules(500, 1234);
handled = true;
break;
case 2222:
CustomCommandHandler.SendMessageToExternalModules(0, 2345);
break;
case 3333:
CustomCommandHandler.SendMessageToExternalModules(0, 3333);
CustomCommandHandler.SendMessageToExternalModules(0, 3456);
handled = true;
break;
}
•Der Steuerbefehl 1111 wird durch den Befehl 1234 ersetzt. Der ursprüngliche Befehl wird nicht weitergeleitet, da handled auf true gesetzt wird.
•Der Steuerbefehl 2222 wird durch den Befehl 2345 ersetzt. Der ursprüngliche Befehl wird weitergeleitet, da handled nicht auf true gesetzt wird. Es ist zu beachten, dass zuerst der Befehl 2345 und erst danach der Befehl 2222 an die externen Module gesendet wird.
•Der Steuerbefehl 3333 wird durch die Befehle 3333 und 3456 ersetzt. Der ursprüngliche Befehl wird nicht weitergeleitet, da handled auf true gesetzt wird. Er wird aber explizit mit SendMessageToExternalModules versendet, dadurch wird die Reihenfolge so geändert, dass zuerst der Befehl 3333 und erst danach der Befehl 3456 an die externen Module gesendet wird.
Zweck: Zeigt wie die Verarbeitung der Steuerbefehle abhängig vom Status des Studio Controllers erfolgen kann.
Code im Ereignis-Handler SendingCommand:
switch (command)
{
case 4444:
if (!CustomCommandHandler.Automat)
{
handled = true;
}
break;
}
Oder die Kurzform:
switch (command)
{
case 4444:
handled = !CustomCommandHandler.Automat;
break;
}
Der Steuerbefehl 4444 wird nur an die externen Module versendet, wenn der Automat aktiv ist. Im manuellen Modus wird handled auf true gesetzt, dadurch wird der Befehl nicht weitergeleitet.
Zweck: Zeigt wie im Sendeplan Text-Steuerbefehle anstelle von Nummern verwendet werden können.
Code im Ereignis-Handler SendingTextCommand:
switch (command.ToUpper())
{
case "KARUSSELLON":
CustomCommandHandler.SendMessageToExternalModules(0, 7771);
handled = true;
break;
case "KARUSSELLOFF":
CustomCommandHandler.SendMessageToExternalModules(0, 7770);
handled = true;
break;
}
•Der im Sendeplan hinterlegte Text-Steuerbefehl "KarussellOn" wird durch den Befehl 7771 ersetzt.
•Der im Sendeplan hinterlegte Text-Steuerbefehl "KarussellOff" wird durch den Befehl 7770 ersetzt.
Bemerkung: Text-Steuerbefehle werden zur Zeit nicht weiter verarbeitet, unabhängig davon ob handled auf true gesetzt wird oder nicht. Wir empfehlen aber trotzdem handled auf true zu setzen.
Zweck: Zeigt wie Text-Steuerbefehle im Sendeplan verwendet werden können um den Studio Controller zu steuern.
Code im Ereignis-Handler SendingTextCommand:
switch (command.ToUpper())
{
case "AUTOMAT":
if (parameters.Length > 0)
{
switch (parameters[0].ToUpper())
{
case "ON":
CustomCommandHandler.SendInternalCommand(0, 10021);
break;
case "OFF":
CustomCommandHandler.SendInternalCommand(0, 10022);
break;
}
}
handled = true;
break;
}
•Der im Sendeplan hinterlegte Text-Steuerbefehl "Automat On" wird durch den Befehl 10021 ersetzt und an sich selber gesendet.
•Der im Sendeplan hinterlegte Text-Steuerbefehl "Automat Off" wird durch den Befehl 10022 ersetzt und an sich selber gesendet.
Bemerkungen:
•Dieses Beispiel zeigt zugleich die Verwendung von Text-Steuerbefehlen mit Parametern. Statt dessen können aber auch zwei Befehle definiert werden, z.B. AutomatOn und AutomatOff, oder SetAutomatOn und SetAutomatOff.
•Text-Steuerbefehle werden zur Zeit nicht weiter verarbeitet, unabhängig davon ob handled auf true gesetzt wird oder nicht. Wir empfehlen aber trotzdem handled auf true zu setzen.
Zweck: Zeigt wie Statusmeldungen, die der Studio Controller an die externen Module sendet, durch andere Meldungen ersetzt werden können.
Code im Ereignis-Handler SendingStatusMessage:
switch (status)
{
case 953371:
CustomCommandHandler.SendMessageToExternalModules(0, 999111);
handled = true;
break;
case 953372:
CustomCommandHandler.SendMessageToExternalModules(0, 999222);
break;
case 953373:
handled = CustomCommandHandler.Abhaken;
break;
}
•Wenn der Studio Controller die Statusmeldung 953371 versendet, wird sie durch die Meldung 999111 ersetzt.Die ursprüngliche Statusmeldung wird nicht weitergeleitet, da handled auf true gesetzt wird.
•Wenn der Studio Controller die Statusmeldung 953372 versendet, wird zusätzlich die Meldung 999222 versendet. Die ursprüngliche Statusmeldung wird weitergeleitet, da handled nicht auf true gesetzt wird.
•Die Statusmeldung 953373 wird nur versendet, wenn das Abhaken nicht aktiv ist. Ist das Abhaken aktiv, wird handled auf true gesetzt, dadurch wird die Meldung nicht weitergeleitet.