Geräteeditor

Aus PC_DIMMER
Version vom 25. Juni 2012, 09:35 Uhr von Admin (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Deutsch

Geraeteeditor.png

Der PC_DIMMER ist gerätebasiert. Das bedeutet, dass man nicht wie bei einfachen Pulten nur den absoluten DMX-Kanal verstellen kann, sondern vielmehr abstrahiert über eine grafische Oberfläche für Geräte die entsprechenden Einstellungen vornehmen kann. Das hat viele Vorteile, allerdings muss man für jedes Gerät eine entsprechende Gerätebeschreibungsdatei (DDF) erstellen. Ist das eigene Gerät nicht in der mitgelieferten Gerätedatenbank enthalten, kann man mit Hilfe des Geräteeditors solch eine Gerätedefinition selbst programmieren. Hierfür gibt es im PC_DIMMER ein eigenes Tool, den Geräteeditor. Seit Version 5 kann dieser auch automatisch nach kurzer Definition der vom Gerät verwendeten Kanäle, der Farben der Farbräder und der Gobos eine grafische Oberfläche und alle nötigen Funktionen erstellen. Man benötigt aber ein wenig Programmierkenntnisse (in Pascal/Delphi), falls man eine eigene Oberfläche erstellen möchte. Man kann die grundlegenden Funktionen aber auch ohne eine solche eigene Oberfläche verwenden, indem man z.B. die Sidebar oder das Touchscreen-Modul verwendet, bzw. die automatisch erzeuge Oberfläche. Dann muss man im Geräteeditor lediglich einige Grundeinstellungen zu den Kanälen des Gerätes und den Grundfunktionen (Farbrad, Dimmerkanal, Shutter, PAN/TILT, etc.). Sonderfunktionen, die der PC_DIMMER nicht von Haus aus kennt, können dann aber nicht genutzt werden.

Erstellen einer eigenen Gerätedefinition

Schritt 1: Eingabe der verwendeten Gerätekanäle

DDFEditor1.jpg

Jeder Kanaltyp darf innerhalb eines DDF nur einmal vergeben werden. Somit darf ein Gerät z.B. nur einen Dimmerkanal, oder einen Rot-Kanal besitzen. Hat man die Kanäle über das grüne Plus hinzugefügt und den Kanaltyp samt Kanalnamen eingegeben, kann man, sofern das Gerät einen COLOR1 Kanal besitzt, die Farben definieren. Man kann pro Farbe einen DMX-Startwert, einen DMX-Endwert, einen Farbnamen und die Farbe selbst definieren. Dies funktioniert analog zum COLOR2-Kanal.

Die Gobos sind auf ähnliche Weise hinzuzufügen. Man klickt auf das grüne Plus und definiert DMX-Start- und Endwert, sowie Gobonamen und eventuell ein Gobobild.

Mehr muss zunächst für ein einfaches DDF nicht getan werden.

Schritt 2: Erstellen einer automatischen Oberfläche

Nachdem Kanäle, Farben und Gobos definiert sind, erstellt der DDFEditor nach einem Klick auf "Erzeuge GUI anhand Kanälen" eine Oberfläche und die dazugehörenden Funktionen. Dies sieht z.B. wie folgt aus:

DDFEditor2.jpg

Der DDF Editor erstellt für PAN/TILT Kanäle automatisch ein Fadenkreuz, für RGB-Kanäle eine Farbauswahl, für COLOR- und GOBO-Kanäle entsprechend eine Auswahlbox mit Bildern und für alle anderen Kanäle einen einfachen Slider mit Beschreibung.

Nachdem man im Editor die Komponenten ein wenig besser angeordnet hat, kann es z.B. so aussehen:

DDFEditor3.jpg

Speichert man nun das DDF und lädt das neue Gerät in den PC_DIMMER, sieht es z.B. dann so aus:

DDFEditor4.jpg

Das DDF ist dann voll funktionsfähig und man hat letztendlich lediglich die Kanäle, Farben und GOBOs eingegeben.


Schritt 3: Erweitern zu einer eigenen Oberfläche

Die eigentliche Programmierarbeit kommt dann, wenn man eigene Oberflächenelemente verwenden möchte. Hier ein Beispiel für das Hinzufügen eines Sliders für den Kanal "DIMMER":

Schritt 3.1: Hinzufügen eines Sliders für "DIMMER"

1. Im Geräteeditor-Hauptmenü auf "Neue Komponente" klicken und "Slider" wählen 2. den Slider nun einmal anklicken und dann per Drag&Drop auf die gewünschte Größe und Position bringen 3. im rechten Feld nun einen eindeutigen Namen vergeben. z.B. DimmerSlider1 4. den Wert für Minimum und Maximum ggfs. korrigieren und auch die Position des Knopfes nach belieben einstellen

Schritt 3.2: Schreiben einer Funktion für den Slider

1. Auf den Tab "Funktionen" klicken 2. mit dem grünen Plus eine neue Funktion hinzufügen 3. sofort einen eindeutigen und gültigen Funktionsnamen eingeben (nur englisch, ohne Leerzeichen und ohne Sonderzeichen) 4. im Programmierfenster nun folgenden Code eingeben:

 begin
   DontRefresh:=true;
   set_channel('DIMMER',-1,dimmerslider1.position,0,0);
 end;

5. Hinweis: man braucht "set_channel...." nicht selber schreiben. Der Editor bietet einige Standardfunktionen im linken Dropdown-Menü oberhalb des Programmierfensters an. Man muss die Funktionen dann lediglich leicht abwandeln. Alternativ kann man einen automatisch generierten Funktionsblock aus dem rechten Dropdown-Menü verwenden (hauptsächlich für die automatisch erstellten Oberflächenelemente nützlich, wie: COLORBOX1, COLORBOX2, GOBOBOX1 und GOBOBOX2) 6. Hinweis2: DontRefresh ist eine globale Variable im DDF und wird immer vor einem Setzen von Kanalwerten auf "True" gesetzt. In der später erläuterten Funktion FormRefresh wird der Wert dieser Variable überprüft und anschließend immer auf "False" gesetzt. Dies verhindert, dass eine Änderung durch das DDF wieder gleich die Komponente aktualisiert. Dies würde bei einem Slider z.B. ein Zittern des Knopfes bewirken. 7. die Funktion ist einsatzbereit

Schritt 3.3: Zuweisen der Funktion auf den Slider

1. Den Slider mit der Maus anklicken (der "Komponenten"-Tab wird automatisch angesprungen) 2. als "Funktion" die neue Funktion "dimmersliderchange" aus dem Dropdown-Menü auswählen 3. fertig. Nach einem Abspeichern würde das DDF nun insoweit funktionieren, dass der Slider den Kanalwert "DIMMER" einstellt - sofern der Kanal "DIMMER" überhaupt unter dem Tab "Kanäle" eingegeben. Wird der DIMMER-Kanal jedoch außerhalb des DDF geändert, zeigt der Dimmerslider noch nicht den neuen Wert an. Es muss die Funktion "FormRefresh" umprogrammiert werden

Schritt 3.4: Auf Refresh-Events reagieren und Slider aktualisieren

1. wieder in den "Funktionen"-Tab wechseln 2. die Funktion "FormRefresh(channel:integer)" im Dropdown-Menü auswählen. Diese Funktion wird vom PC_DIMMER bei Änderungen mit der Information des geänderten Kanals ("channel") aufgerufen. Wir müssen jetzt auf den DIMMER-Kanal mit einem Switch-Case warten und entsprechend reagieren. 3. so sollte der Code aussehen, wenn der "DIMMER"-Kanal der erste Kanal im DDF wäre:

 var
   value:integer;
 begin
   if not DontRefresh then
   case channel of
     0:
     begin
       dimmerslider1.position:=get_channel('DIMMER');
     end;
   end;
 end;

4. die Überprüfung, ob DontRefresh=False verhindert, dass wir beim Ändern eines Wertes mit dem Slider nicht gleich wieder den Sliderwert setzen. Das würde wie unter Schritt 3.3 erläutert ein Zittern des Slider-Knopfes bewirken (Feedback-Schleife) 5. Erläuterung des Codes: wird die Funktion "FormRefresh" aufgerufen, prüfen wir, welcher Kanal geändert wurde. Ist channel=0, wurde der erste DDF-Kanal mit neuen Werten versorgt. Dies wäre in diesem Beispiel unser DIMMER-Kanal, also wollen wir den neuen Wert auf den Slider setzen. Mit der Funktion get_channel() bekommen wir den aktuellen Kanalwert aus dem PC_DIMMER-Hauptprogramm. Den Kanaltyp geben wir als String an. Jetzt kommt das Delphi-Wissen: unsere Slider-Komponente besitzt viele Eigenschaften, welche man auch direkt im Code ansprechen kann. Die Knopf-Position kann man mit der Eigenschaft .position:=WERT einstellen, was wir dann auch hier machen. 6. nach Abspeichern der DDF braucht man das DDF-Fenster lediglich kurz beenden (falls es offen war) und mit einem Rechtsklick auf das Icon in der Bühnenansicht neu öffnen und schon werden die Änderungen übernommen. Man braucht also das Gerät nicht neu hinzufügen.


Änderungen, die nicht die Kanalstruktur des DDF betreffen (also lediglich die Oberfläche) werden sofort beim Öffnen der Oberfläche z.B. in der Bühnenansicht übernommen. Lediglich bei Änderungen in den Tabs "Kanäle" muss man einen Abgleich der DDF mit dem Gerät machen: 1. Gerätesteuerung öffnen 2. abzugleichendes Gerät selektieren 3. im Hauptmenü der Gerätesteuerung auf "Geräte" -> "Zusatzfunktionen" -> "Selektierte Geräte mit Gerätedefinition abgleichen" anklicken 4. fertig.



Tipps und Hinweise

Colorbox

Eine Colorbox kann konzeptionell bedingt nicht zwei identische Farben beinhalten. Mann muss also dafür sorgen, dass für zwei rote Einträge z.B. (255 0 0) für den einen Eintrag und (255 0 1) für den zweiten Eintrag verwendet wird. Die beiden Farben sehen zwar identisch aus, sind es aber nicht, da die zweite Farbe minimalst mehr Blau-Anteil besitzt.


English