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:

    1. Programmteil und Bezeichnung des Befehls zur Orientierung
    2. GUID des jeweiligen Befehls (ProgrammteilGUID kann ignoriert werden - es wird nur die eigentliche BefehlsGUID benötigt)
    3. Hinweis, ob die Angabe von VALUE benötigt wird (InputValueOnly:=true/false)
    4. Anzahl der Integer-Argumente
    5. Anzahl der String-Argumente
    6. Anzahl der GUID-Argumente

    Wird ein Argument nicht benötigt, dann bitte entsprechend des Datentyps angeben:
    1. INTEGER: 0
    2. STRING: NULL
    3. 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
13: COLOR2
14: R (Red)
15: G (Green)
16: B (Blue)
17: IRIS
18: SHUTTER
19: DIMMER
20: ZOOM
21: FOCUS
22: PRISMA
23: PRISMAROT

24: FROST
25: SPECIAL1
26: SPECIAL2
27: SPECIAL3
28: SPECIAL4
29: SPECIAL5
30: SPECIAL6
31: SPECIAL7
32: SPECIAL8
33: SPECIAL9
34: SPECIAL10
35: FILE

36: OPTION
37: VOLUME
38: PICTURE
39: POSITION
40: W (White)
41: A (Amber)
42: C (Cyan)
43: M (Magenta)
44: Y (Yellow)
45: UV
46: FOG