Damit man sehr einfach eigene Anwendungen mit dem PC_DIMMER koppeln kann bietet die Software eine Terminalschnittstelle, die über das TCP/IP-Protokoll angesteuert wird. Somit ist diese Schnittstelle sowohl lokal auf dem Rechner von Programm zu Programm, wie auch von Computer zu Computer über Netzwerk verwendbar. Im Folgenden wird die Schnittstelle detailliert beschrieben.
Zum Testen der grundlegenden Funktionen der Terminalschnittstelle habe ich hier ein kleines Demoprogramm programmiert, welches sich auf den PC_DIMMER-Server einloggt: DOWNLOAD
Der PC_DIMMER bietet auf Port 10160 einen TCP-Server an, auf den man sich mit jedem TCP-Clienten einloggen kann. Der Port kann in den erweiterten Einstellungen umgestellt werden. Da seit Version 5.0.1 grundlegende Kompatibilität der einfachen Terminalbefehle zu DMXControl besteht, kann man z.B. für das Ambilight-Programm den Port auf den DMXControl Port umstellen. Der Server erwartet einfache Textnachrichten die folgende Dinge beinhalten können:
1 Delphi-Programmcode:
wenn z.B. folgendes gesendet wird, führt das Programm Delphi-Programmcode aus:
unit Testprogramm;
interface
procedure RunCommand;
implementation
procedure RunCommand;
begin
ShowMessage('Hello World!');
end;
Man kann somit die PC_DIMMER Funktionen mit Code ergänzen.
2 Abfrage von Informationen aus dem PC_DIMMER:
Sendet man den folgenden Befehl, wird einem ein Text vom PC_DIMMER zugeschickt, der alle Geräte auflistet, zusammen mit Namen und GUID, die man für weitere Befehle verwenden kann:
- get_devices
das gleiche funktioniert auch für Gruppen:
- get_groups
um erweiterte Informationen zu einem Gerät abzurufen, verwendet man den folgenden Befehl:
- get_deviceinfo
Dem Befehl wird dann noch eine GUID des abzurufenden Gerätes übergeben, die man ja vorher über get_devices bekommen hat:
get_deviceinfo {ED519854-A86C-4566-ACB8-949F17C3A9E0}
- get_deviceinfo2
Wie get_deviceinfo, jedoch noch zusätzlich mit einer Information über das Gerätebild
get_deviceinfo {ED519854-A86C-4566-ACB8-949F17C3A9E0}
Zum Abfragen der einzelnen eingerichteten Szenen kann man den folgenden Befehl verwenden:
- get_scenes
Dem Befehl wird eine laufende Nummer für die einzelnen Szenentypen übergeben. Eine "0" entspricht den einfachen Szenen, eine "1" den Geräteszenen, eine "2" den Audioszenen, usw. Man kann sich die Abfolge anhand der Szenenverwaltung ableiten.
Der folgende Aufruf liefert z.B. alle eingerichteten Effekte:
get_scenes 8
Möchte man per Terminal auf das Kontrollpanel zugreifen, kann man sich des folgenden Befehls bedienen:
- get_controlpanel
Der Befehl besitzt mehrere Optionen. Sendet man ihn ohne weitere angaben, wird einem lediglich die Anzahl an Zeilen und Spalten des Kontrollpanels übergeben:
get_controlpanel -> coundX: 3, countY: 15
Übergibt man nun noch zwei Zahlen für X und Y, kann man einzelne Buttons abfragen:
get_controlpanel 1 4
Es werden als Antwort der Name, die Farbe und der Typ des Buttons übertragen. Gibt man für X und Y eine 0 an, dann werden alle Buttons in einem Rutsch übertragen:
get_controlpanel 0 0
- get_nodesets
Ruft alle Verfügbaren Knotensets der Knotensteuerung ab. Rückgabe ist: nodesets COUNT 1:Name,GUID 2:Name,GUID
- get_nodes
Ruft alle Knoten eines Knotensets mit der angegebenen ID ab. Rückgabe ist nodes COUNT 1:Name,GUID 2:Name,GUID
get_nodes GUID
3 PC_DIMMER Steuerbefehle
Ein mächtiges Werkzeug beinhalten die Steuerbefehle. Sie können so ziemlich alles am PC_DIMMER steuern, was man möchte (ab Version 5.0.1).
Es werden folgende Dinge als Text übertragen:
- GUID: Eindeutiger Bezeichner einer Komponente im PC_DIMMER in der Form {0C2EB422-CE47-460D-BD70-8E333556D551}
- KANALNAME: Ein Bezeichner der den Kanalnamen eines Gerätes angibt. Eine Liste der möglichen Kanalnamen ist weiter unten aufgeführt. z.B. DIMMER
- STARTWERT, ENDWERT: sind jeweils als Text formatierte Bytewerte zwischen 0 und 255. Wenn -1 als Wert eingetragen wird, wird der zum Zeitpunkt der Befehlsausführung geltende Wert automatisch eingetragen (vor allem als Startwert sinnvoll)
- FADEZEIT, DELAYZEIT: gibt die jeweilige Zeit in Millisekunden als Text an. Reicht von 0 bis 2147483647 (entspricht knapp 25 Tagen - sollte reichen)
Es gibt derzeit folgende Befehle (Kurzform in Klammern), die man auch mit Semikolons aneinander reihen und somit direkt nacheinander ausführen kann:
- get_channel (get_ch)
Liefert den aktuellen Wert des übergebenen Kanals:
get_ch 1 -> Antwort: CV 1 128
Bei "get_ch 0" werden sämtliche 512 Kanäle in einem Rutsch übertragen. - get_range
Liefert einen Bereich von Kanalwerten:
get_range 16 32
Sendet die Werte von Kanal 16 bis 32 zurück - get_devchannel
Liefert den aktuellen Wert des übergebenen Kanals eines bestimmten Gerätes:
get_devchannel GUID KANALNAME -> Antwort: DCV 128 - get_dimmer
Liefert den aktuellen Wert des Dimmerkanals eines Gerätes:
get_dimmer GUID -> Antwort: DDV 128
- set_highlight
Erleuchtet ein Gerät, egal ob Shutter, Dimmer, RGBAW oder alles zusammen
set_highlight GUID Wert Fadetime
Wertebereiche: set_highlight {ID} 0..255 0...x ms
- get_strobe
Liefert den aktuellen Wert des Strobe-Kanals eines Gerätes:
get_strobe GUID -> Antwort: DSV 128
- get_shutter
Liefert den aktuellen Wert des Shutters eines Gerätes:
get_shutter GUID -> Antwort: DShV 0
- set_channel (set_ch)
Setzt einen Kanal eines PC_DIMMER Gerätes auf einen bestimmten Wert (zusammen mit einer Fadezeit und eines Delays, sofern man möchte). Die Aufrufkonvention lautet:
set_ch GUID KANALNAME STARTWERT ENDWERT FADEZEIT DELAYZEIT - set_color
Setzt die Farbe eines Gerätes. Es werden R,G und B Werte als Byte übermittelt. Besitzt das anzusteuernde Gerät keine RGB-Kanäle, sondern nur Farbräder oder auch nur einen Farbfilter, wird entsprechend die bestpassendste Farbe, bzw. die Helligkeit des Gerätes entsprechend angepasst. Der Befehl erwartet folgendes:
set_color GUID R G B FADEZEIT DELAYZEIT
R,G und B sind jeweils zwischen 0 und 255 zu übergeben - set_shutter
Öffnet oder schließt den Shutter eines Gerätes.
set_shutter GUID OPENorCLOSE DELAYZEIT
OPENorCLOSE kann 0 (Geschlossen) oder 255 (Offen) sein. - set_strobe
Setzt den Strobe-Kanal eines Gerätes:
set_strobe GUID VALUE FADEZEIT DELAYZEIT - set_dimmer
Setzt den Dimmer-Kanal eines Gerätes:
set_dimmer GUID VALUE FADEZEIT DELAYZEIT - set_fog
Setzt alle Nebelmaschinen auf den gesetzten Wert:
set_fog VALUE FADEZEIT DELAYZEIT
- set_gobo1rot
Setzt die Goborotation von Gobo1 eines Gerätes:
set_gobo1rot GUID VALUE FADEZEIT DELAYZEIT - set_gobo2rot
Setzt die Goborotation von Gobo2 eines Gerätes:
set_gobo2rot GUID VALUE FADEZEIT DELAYZEIT
- set_goboX+/-
Die Goboräder eines Geräts können ganz einfach ein Gobo nach links oder rechts gedreht werden
set_gobo1+ GUID
set_gobo1- GUID
set_gobo2+ GUID
set_gobo2- GUID
- set_iris
Setzt den Iris-Kanal eines Gerätes:
set_iris GUID VALUE FADEZEIT DELAYZEIT
- set_prisma
Setzt das Prisma eines Gerätes. Wenn SINGLEorTRIPLE auf 255, dann wird das Prisma eingeschaltet. Wenn der Wet 0 ist, entsprechend ausgeschaltet.
set_prisma GUID SINGLEorTRIPLE DELAYZEIT
- set_prismarot
Setzt die Rotation des Prismas:
set_prismarot GUID VALUE FADEZEIT DELAYZEIT
- set_absolutchannel (set_ach)
Setzt einen PC_DIMMER Kanal ohne Rücksicht auf die jeweilige Gerätekonfiguration:
set_ach KANALNUMMER STARTWERT ENDWERT FADEZEIT DELAYZEIT
- set_datainchannel (set_dch)
Setzt einen der DataIn-Kanäle, die man frei im Programm verrouten kann
set_dch KANALNUMMER KANALWERT
- set_devaddress
Ändert die Startadresse eines Gerätes
set_devaddress GUID Startadresse
Wertebereiche: set_devaddress {ID} 1..8192
- set_devcolor
Setzt den Farbfilter eines normalen Dimmergerätes:
set_devcolor GUID R G B
Wertebereiche: set_devcolor {ID} 0..255 0..255 0..255
- set_nodeset nodesetID Ausdehnung Kontrast Fadetime UseRGB UseA UseW UseD
Setzt Eigenschaften des angegebenen Knotensets (siehe hierzu auch die Knotensteuerung selbst)
Wertebereiche: set_nodeset {ID} 0..250000 0..50 0..1000 -1/1 -1/1 -1/1 -1/1
- set_node nodeID X Y R G B A W D
Setzt Eigenschaften eines Einzelnen Knotens eines Knotensets. Es wird automatisch das gewünschte Knotenset aufgerufen und aktiviert, sowie der angegebene Knoten selektiert.
Wertebereiche: set_node {ID} 0..10000 0..10000 -1/0..255 -1/0..255 -1/0..255 -1/0..255 -1/0..255 -1/0..255
- start_scene (start_sc)
- stop_scene (stop_sc)
start_scene und stop_scene lassen entsprechend eine Szene Starten oder Stoppen. Dabei wird auch ein Effekt als Szene angesehen:
start_sc GUID
- click_button (click_btn)
Hiermit kann sehr schnell ein Kontrollpanelbutton angeklickt werden. X und Y geben jeweils die Spalte (X) und Zeile (Y) des gewüsnchten Buttons an:
click_btn X Y
- run_command (run_cmd)
Dieser Befehl ist wohl der umfangreichste Befehl. Man hat Zugriff auf das gesamte Befehlssystem des PC_DIMMERs. Er hat entsprechend viele Parameter:
run_cmd GUIDTYPE INTEGER1 INTEGER2 STRING1 STRING2 GUID1 GUID2 VALUE
Als GUIDTYPE muss ein gewünschter Befehl aus der folgenden Liste ausgewählt werden. INTEGER1, INTEGER2, STRING1, STRING2, GUID1 und GUID2 sind dann entsprechend zu setzen. VALUE gibt optional die Möglichkeit z.B. bei Ändern des Submasters einen Wert zu übergeben, wobei dann INTEGER1 und INTEGER2 die Submasterbank und den gewünschten Submaster angeben.
Eine vollständige Liste (Stand: PC_DIMMER Version 5.0.1, 14.08.2010) der Befehle kann hier heruntergeladen werden: DOWNLOAD. In der Liste werden folgende Informationen gegeben:- Programmteil und Bezeichnung des Befehls zur Orientierung
- GUID des jeweiligen Befehls (ProgrammteilGUID kann ignoriert werden - es wird nur die eigentliche BefehlsGUID benötigt)
- Hinweis, ob die Angabe von VALUE benötigt wird (InputValueOnly:=true/false)
- Anzahl der Integer-Argumente
- Anzahl der String-Argumente
- Anzahl der GUID-Argumente
Wird ein Argument nicht benötigt, dann bitte entsprechend des Datentyps angeben:- INTEGER: 0
- STRING: NULL
- GUID: {00000000-0000-0000-0000-000000000000}
Beispiel für einen Befehlsaufruf, um Submaster 2 auf 50% zu setzen:
run_cmd {0A46742C-922F-4B5C-B768-1DE1DBA86847} 2 0 NULL NULL {00000000-0000-0000-0000-000000000000} {00000000-0000-0000-0000-000000000000} 127
Beispiel, um den DIMMER eines bestimmten Gerätes auf 100% zu stellen (bei Befehlen wird der Kanalname nicht als String, sondern als Nummer durchgegeben. Unten in der Liste der möglichen Gerätekanäle kann die Nummer eingesehen werden):
run_cmd {7664CE95-5F14-4CD3-8081-5DC12E077A6A} 19 0 NULL NULL {ED519854-A86C-4566-ACB8-949F17C3A9E0} {00000000-0000-0000-0000-000000000000} 255
Liste der möglichen Gerätekanäle
0: PAN 1: TILT 2: PANFINE 3: TILTFINE 4: MOVES 5: SPEED 6: GOBO1 7: GOBO1ROT 8: GOBO2 9: GOBO2ROT 10: GOBO3 11: EXTRA |
12: COLOR1 |
24: FROST |
36: OPTION |