Terminalschnittstelle

Aus PC_DIMMER
Version vom 15. Dezember 2015, 23:55 Uhr von Admin (Diskussion | Beiträge) (2 Abfrage von Informationen aus dem PC_DIMMER)
Wechseln zu: Navigation, Suche

Deutsch

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. Seit Version 5 gibt es auch eine grundlegende Kompatibilität der einfachen Terminalbefehle zu DMXControl. Der Server erwartet einfache Textnachrichten die folgende Dinge beinhalten können:


Weiterhin wird ein Programm mit jedem PC_DIMMER-Setup ausgeliefert, mit welchem man direkt als Verknüpfung PC_DIMMER-Kommandos versenden kann. So kann man z.B. das Starten einer Szene über einen externen Link auf dem Windows-Desktop, oder über Drittprogramme ausführen. Das Programm findet man im PC_DIMMER-Installationsverzeichnis als "PC_DIMMER_CMD.exe". Startet man das Programm ohne Parameter, wird eine kurze Hilfe angezeigt. Hier ein Beispiel, um eine Szene zu starten:

 PC_DIMMER_CMD.exe 127.0.0.1 10160 "start_scene {21EC2020-3EFF-1069-A2DD-08002B30309D}"

oder um den PC_DIMMER-Kanal 1 und Kanal 2 von ihren jeweils aktuellen Werten (daher die "-1") auf 100% (255) innerhalb von 4 Sekunden zu blenden:

 PC_DIMMER_CMD.exe 127.0.0.1 10160 "set_absolutchannel 1 -1 255 4000 0;set_absolutchannel 2 -1 255 4000 0"


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}


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 GUID

Ruft alle Knoten eines Knotensets mit der angegebenen ID ab. Rückgabe ist nodes COUNT 1:Name,GUID 2:Name,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_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_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_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
   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.


Vollständige Befehlsliste

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

13: COLOR2

14: R

15: G

16: B

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

41: A

English