PDA-Fernsteuerung DMXC2: Unterschied zwischen den Versionen

Aus Deutsches DMXC-Wiki
K (Schützte „PDA-Fernsteuerung DMXC2“ (‎[edit=sysop] (unbeschränkt) ‎[move=sysop] (unbeschränkt)))
Keine Bearbeitungszusammenfassung
 
(19 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{Kapitelüberschrift}}     
{{Manual Header
{{NavigationTop-Man2
| Type = DMXC2 Main-Software
|zurückLink = Figureneditor_DMXC2
| Version = 2.12.2
|zurückText = Figureneditor
| zurückLink = Figureneditor_DMXC2
|vorLink = Tastatursteuerung_DMXC2
| zurückText = Figureneditor
|vorText = Tastatursteuerung
| vorLink = Tastatursteuerung_DMXC2
| vorText = Tastatursteuerung
}}
}}
{{Start-LaTeX}}
{{Start-LaTeX}}
==Überblick==
==Überblick==
Die PDA-Fernbedienung hat sich aus der Terminal-Schnittstelle von DMXControl über die Serielle-Fernbedienung weiterentwickelt. Mit der « PDA Fernbedienung » läßt sich DMXControl per PDA, aber auch über jede andere serielle Kommunikation (z.B. über die Com-Schnittstelle, Bluetooth oder über WLAN) steuern.
Die {{Manual_Windowcaption|PDA-Fernbedienung}} hat sich aus der {{Manual_Windowcaption|Terminal-Schnittstelle}} von DMXControl über die {{Manual_Windowcaption|Serielle Fernbedienung}} weiterentwickelt. Durch die {{Manual_Windowcaption|PDA Fernbedienung}} lässt sich DMXControl mit PDAs und anderen seriellen Schnittstellen (Telnet, COM-Schnittstelle, Bluetooth oder über WLAN) steuern.


{{ BoxWichtig| Text=Das Fenster der PDA-Fernbedienung muss wie bei allen anderen Fernbedienungen/Steuerungen in DMXControl offen bleiben, bei geschlossenen Fenster findet keine Kommunikation statt.}}
{{Manual Box | de | Important | Das Fenster der PDA-Fernbedienung muss, wie bei allen anderen Fernbedienungen/Steuerungen in DMXControl, offen bleiben. Bei geschlossenen Fenster findet keine Kommunikation statt.}}


==Beschreibung==
==Beschreibung==
Die « Serielle Fernbedienung » wurde in DMXControl implementiert, um den Zugriff über Ethernet auf das Programm zu ermöglichen. DMXControl erwartet die Verbindung auf Port 2145. Jedes Programm, welches Zeichenketten (Strings) verschicken kann ist damit in der lage DMXControl fernzusteuern.
Die {{Manual_Windowcaption|Serielle Fernbedienung}} wurde in DMXControl implementiert, um den Zugriff über die serielle Schnittstelle oder über ein Netzwerk (z.B. Ethernet) auf das Programm zu ermöglichen. Im Netwerk erwartet DMXControl eine Verbindung auf Port 2145. Dieser Port kann im Fenster der {{Manual_Windowcaption|PDA-Fernsteuerung}} geändert werden. Jedes Programm, das Zeichenketten (Strings) verschicken kann, ist damit in der Lage, DMXControl fernzusteuern.
Die « Serielle Fernbedienung » wird unter anderem von der PDA-Steuerung [[PDA-2-DMXC]] und vom Web-Interface bzw. der PHP-Klasse sowie verschiedener anderer Steuerungen (bspw für Android) verwendet.
Die {{Manual_Windowcaption|Serielle Fernbedienung}} wird unter anderem von der PDA-Steuerung [[PDA-2-DMXC]] und vom Web-Interface bzw. der PHP-Klasse sowie verschiedener anderer Steuerungen (bspw für Android) verwendet.
Die Schnittstelle ist öffentlich, deshalb ist es auch für jeden möglich über ein beliebiges Programm auf DMXControl zuzugreifen.
Da das Protokoll der Schnittstelle offen ist, ist es für jeden möglich, über ein eigenes Programm auf DMXControl zuzugreifen.


Die Schnittstelle funktioniert bidirektional, es können also Daten gesendet und angefragt werden. Eine Tabelle der möglichen Befehle ist weiter unten zu finden. Manche Befehle liefern nach dem Ausführen einen Wert als Bestätigung zurück, andere nicht.  
Die Schnittstelle funktioniert bidirektional, d.h. es können Daten gesendet und angefragt werden. Eine Tabelle der möglichen Befehle ist weiter unten zu finden. Manche Befehle liefern nach dem Ausführen einen Wert als Bestätigung zurück, andere nicht.  


Jeder Befehl der an DMXControl gesendet wird, muss mit einem Zeilenumbruch (in Java und C# "\n") abgeschlossen werden.  
Jeder Befehl der an DMXControl gesendet wird, muss mit einem Zeilenumbruch (in Java und C# "\n") abgeschlossen werden.


== Schnittstelle ==
== Schnittstelle ==
In der folgende Tabelle ist eine Liste der Befehle und Antworten von DMXControl aufgeführt. Entwickler, die ein Externes Programm zur Steuerung von DMXControl schreiben möchten, können erste Erfahrungen am besten mit einem Terminalprogramm wie Putty machen. Dann erkennt man sofort, wie die Antworten aussehen. Alle Befehle werden von DMXControl unabhängig von Groß / Kleinschreibung interpretiert.  
In der folgende Tabelle ist eine Liste der Befehle und Antworten von DMXControl aufgeführt. Entwickler, die ein externes Programm zur Steuerung von DMXControl schreiben möchten, können erste Erfahrungen am besten mit einem Terminalprogramm wie Telnet oder Putty machen. Am lokalen Arbeitsplatz geht das mit dem Befehl: '''telnet 127.0.0.1 2145'''. Dann erkennt man sofort, wie die Antworten aussehen. Alle Befehle werden von DMXControl unabhängig von Groß / Kleinschreibung interpretiert.  


{{ BoxHinweis
{{Manual Box | de | Hint |Anstelle von '''SetChannel''' kann also auch '''sEtChAnNeL''' geschrieben werden.
| Text=Anstelle von '''SetChannel''' kann also auch '''sEtChAnNeL''' geschrieben werden.
}}
}}


Zeile 89: Zeile 89:
  |GetCommandPossibilities ''Dropdown-Index Vorgänger-Index''
  |GetCommandPossibilities ''Dropdown-Index Vorgänger-Index''
  |''Liste der Möglichkeiten''
  |''Liste der Möglichkeiten''
  |Ein Befehl setzt sich aus einzelnen Teilen zusammen. ''Modul'', ''Gerät/Funktion'', ''Kanal'', ''...''. Da die folgende Auswahl auf der vorhergehenden basiert muss der reihe nach von vorne abgefragt werden. Mit ''GetCommandPossibilities 1'' erhält man eine Liste der Modulmöglichkeiten. Jede Möglichkeit hat eine ID. Mit ''GetCommandPossibilities 2 2'' erhält man die Auswahl für Gerät/Funktion, auf Basis von Modul 2.
  |Ein Befehl setzt sich aus einzelnen Teilen zusammen. ''Modul'', ''Gerät/Funktion'', ''Kanal'', ''...''. Da die folgende Auswahl auf der vorhergehenden basiert, muss der Reihe nach von vorne abgefragt werden. Mit ''GetCommandPossibilities 1'' erhält man eine Liste der Modulmöglichkeiten. Jede Möglichkeit hat eine ID. Mit ''GetCommandPossibilities 2 3'' erhält man die Auswahl für Gerät/Funktion, auf Basis von Modul 3.
  |'''GetCommandPossibilities 1''' ->
  |'''GetCommandPossibilities 1''' ->
  '''1. Geräte'''
  '''1. Deaktiviert'''
  '''2. Audiotrack'''
  '''2. Audio'''
'''3. Audiotrack'''
  '''...'''
  '''...'''
  |- style="vertical-align:top;"
  |- style="vertical-align:top;"
Zeile 102: Zeile 103:
  |}
  |}
<br>
<br>
== GetCommandPossibilities und RunCommand ==
== GetCommandPossibilities und RunCommand ==
Um einen spezifischen Befehl mit '''RunCommand''' auszuführen, muss man wissen, welche ID der Befehl besitzt. Diese ID kann man mit dem Aufruf '''GetCommandPossibilities''' sehr einfach herausfinden. Man arbeitet sich dabei Schritt für Schritt die Befehlsstufen herab. Die erste Ziffer hinter dem Aufruf stellt die Stufe dar, auf der man sich gerade befindet. Die zweite Ziffer steht für die Auswahl des Tabelleneintrags in der Tabelle eine Ebene höher. Daher ist es sehr wichtig, dass die Stufen der Reihe nach durchlaufen werden.
Um einen spezifischen Befehl mit '''RunCommand''' auszuführen, muss man wissen, welche ID der Befehl besitzt. Diese ID kann man mit dem Aufruf '''GetCommandPossibilities''' sehr einfach herausfinden. Man arbeitet sich dabei Schritt für Schritt von der obersten Ebene (1) bis zur benötigten Ebene (z.B. 3) herab. Die erste Ziffer hinter dem Aufruf stellt die Ebene dar, auf der man sich gerade befindet. Die folgenden Ziffern stehen für die IDs der Ergebnisse der Abfragen der vorherigen Ebenen. Daher ist es sehr wichtig, dass die Ebenen der Reihe nach durchlaufen werden.
<br>
<br>
Dies könnte wie folgt aussehen: Ein Aufruf des Befehls '''GetCommandPossibilities 1''' liefert die folgende Tabelle, wobei es hier keine zweite Ziffer gibt, da wir uns auf der höchten Ebene (Ebene 1) befinden:
Um z.B. einen Effekt auf diese Weise zu starten, könnte dies wie folgt aussehen: Ein Aufruf des Befehls '''GetCommandPossibilities 1''' liefert die folgende Tabelle, wobei es hier keine zweite Ziffer gibt, da wir uns auf der höchsten Ebene (Ebene 1) befinden.
Installierte Plugins reihen sich in die Liste ein, wenn vorhanden.


  1. Deaktiviert
#Deaktiviert
  2. Audiotrack
#Audio
  3. BeatTool
#Audiotrack
  4. DMX-Ausgabe
#BeatTool
  5. DMXIn-Remote
#DMX-Ausgabe
  6. Effekte
#DMXIn-Remote
  7. Geräte
#Effekte
  8. Gruppenauswahl
#External Action (Plugin)
  9. Kommandozeile
#Geräte
  10. Master
#Gruppenauswahl
  11. MIDI-Remote
#Joystick
  12. Sound Analyzer
#KommandoBox
  13. Submaster
#Kommandozeile
  14. Szenenbibliothek
#Master
  15. Szenenliste
#MIDI-Remote
  16. Textbuch
#OSC-Receiver (PLugin)
#Sound Analyzer
#Submaster
#Szenenbibliothek
#Szenenliste
#Textbuch


Nun lässt sich die Auswahl verfeinern. Um nun z.B. einen Effekt zu starten, ruft man als nächstes '''GetCommandPossibilities 2 6''' auf, also Ebene 2, mit Auswahl des Listenelementes 6 der Stufe 1-Tabelle. Darauf hin gibt DMXC folgende Liste aus:
Nun fragen wir die Optionen für die '''ID 7 Effekte''' für die Ebene '''2''' ab: '''GetCommandPossibilities 2 7''' liefert uns die ID, der Optionen, auf die zugegriffen werden kann. Auswahl und Sprünge der Effekte wäre in diesem Fall über die IDs 1-4 möglich. Die selbst programmieten Effekte haben die IDs ab 6:


  1. Alle
#Alle
  2. Ausgewählter
#Ausgewählter
  3. Nächster
#Nächster
  4. Vorheriger
#Vorheriger
  5. ----
#----
  6. [EFFEKT 1]
#[EFFEKT 1]
  7. [EFFEKT 2]
#[EFFEKT 2]
  8. [EFFEKT 3]
#[EFFEKT 3]
  9. ...
#...


Der nun folgende Aufruf '''GetCommandPossibilities 3 6''' wählt in unserem Beispiel ''[Effekt 1]'' aus. Darauf gibt DMXControl folgende Liste zurück:
Der nun folgende Aufruf für die 3. Ebene '''GetCommandPossibilities 3 6''' zeigt in unserem Beispiel ''[Effekt 1]'' die für diesen Effekt möglichen Funktionen. DMXControl gibt folgende Liste zurück:


  1. Auswählen
#Auswählen
  2. Start/Stop
#Start/Stop
  3. Start
#Start
  4. Stop
#Stop
  5. Beschl. setzen
#Beschl. setzen
  6. Intens. setzen
#Intens. setzen
  7. Nächster Schritt
#Nächster Schritt
  8. Wiederh. ein/aus
#Wiederh. ein/aus


Nun ist die Befehlskette durchlaufen und man kann abschließend z.B. mit dem Aufuf '''RunCommand 6 6 3 0 0.000''' den ''Effekt 1''' starten oder ihn mit '''RunCommand 6 6 4 0 0.000''' stoppen. Andere Aufrufe funktionieren nach dm selben Prinzip.
Mit '''RunCommand 7 6 3''' lässt sich der Effekt 1 starten oder mit '''RunCommand 7 6 4''' stoppen. Für den Effekt 3 wären das die Aufrufe '''RunCommand 7 8 3''' und '''RunCommand 7 8 4'''. Wenn noch Werte mit übertragen werden müssen, werden diese hinten angehängt: '''RunCommand 7 6 3 0 0.000'''. Andere Aufrufe funktionieren nach dem selben Prinzip.
 
{{Manual Box | de | Hint | Evtl. hilft es beim Verständnis sich die Programmierung der Kommandobox anzusehen. Die Spalten bei der Buttonprogrammierung {{Manual_Fields|Modul}}, {{Manual_Fields|Gerät/Funktion}}, {{Manual_Fields|Kanal}}, {{Manual_Fields|Flags}} und {{Manual_Fields|Wert}} entsprechen den Ebenen, IDs und Werten des '''RunCommand'''-Befehls.
}}


== Links und Referenzen==     
== Links und Referenzen==     
Links
Links
#PDA-Fernbedienung Software: http://www.dmxcontrol.de/files/PDA-2-DMXC_1.0_Setup.exe
#PDA-Fernbedienung Software: http://www.dmxcontrol.de/files/pda-2-dmxc/PDA-2-DMXC_1.0_Setup.exe


Tutorials
Tutorials
#[[PDA-2-DMXC|PDA-2-DMXC Tutorial]]
#[[PDA-2-DMXC|PDA-2-DMXC Tutorial]]
{{End-LaTeX}}
{{End-LaTeX}}
{{NavigationTop-Man2
|zurückLink = Figureneditor_DMXC2
|zurückText = Figureneditor
|vorLink = Tastatursteuerung_DMXC2
|vorText = Tastatursteuerung
}}


[[Kategorie: DMXControl 2]]
[[en:PDA_remote_control_DMXC2]]
[[Kategorie:Handbuch DMXControl 2]]

Aktuelle Version vom 10. November 2024, 16:59 Uhr

Books.png Artikel beschreibt
DMXControl 2.12.2
PDA-Fernsteuerung DMXC2
Arrow back.png Figureneditor
Tastatursteuerung Arrow forw.png
Inhaltsverzeichnis

 

Überblick

Die PDA-Fernbedienung hat sich aus der Terminal-Schnittstelle von DMXControl über die Serielle Fernbedienung weiterentwickelt. Durch die PDA Fernbedienung lässt sich DMXControl mit PDAs und anderen seriellen Schnittstellen (Telnet, COM-Schnittstelle, Bluetooth oder über WLAN) steuern.


Wichtiger Hinweis Das Fenster der PDA-Fernbedienung muss, wie bei allen anderen Fernbedienungen/Steuerungen in DMXControl, offen bleiben. Bei geschlossenen Fenster findet keine Kommunikation statt.

Beschreibung

Die Serielle Fernbedienung wurde in DMXControl implementiert, um den Zugriff über die serielle Schnittstelle oder über ein Netzwerk (z.B. Ethernet) auf das Programm zu ermöglichen. Im Netwerk erwartet DMXControl eine Verbindung auf Port 2145. Dieser Port kann im Fenster der PDA-Fernsteuerung geändert werden. Jedes Programm, das Zeichenketten (Strings) verschicken kann, ist damit in der Lage, DMXControl fernzusteuern. Die Serielle Fernbedienung wird unter anderem von der PDA-Steuerung PDA-2-DMXC und vom Web-Interface bzw. der PHP-Klasse sowie verschiedener anderer Steuerungen (bspw für Android) verwendet. Da das Protokoll der Schnittstelle offen ist, ist es für jeden möglich, über ein eigenes Programm auf DMXControl zuzugreifen.

Die Schnittstelle funktioniert bidirektional, d.h. es können Daten gesendet und angefragt werden. Eine Tabelle der möglichen Befehle ist weiter unten zu finden. Manche Befehle liefern nach dem Ausführen einen Wert als Bestätigung zurück, andere nicht.

Jeder Befehl der an DMXControl gesendet wird, muss mit einem Zeilenumbruch (in Java und C# "\n") abgeschlossen werden.

Schnittstelle

In der folgende Tabelle ist eine Liste der Befehle und Antworten von DMXControl aufgeführt. Entwickler, die ein externes Programm zur Steuerung von DMXControl schreiben möchten, können erste Erfahrungen am besten mit einem Terminalprogramm wie Telnet oder Putty machen. Am lokalen Arbeitsplatz geht das mit dem Befehl: telnet 127.0.0.1 2145. Dann erkennt man sofort, wie die Antworten aussehen. Alle Befehle werden von DMXControl unabhängig von Groß / Kleinschreibung interpretiert.


Wichtiger Hinweis Anstelle von SetChannel kann also auch sEtChAnNeL geschrieben werden.

Die Abkürzung CV steht für ChannelValue und CVC für ChannelValueChanged


Anfrage an DMXC Antwort von DMXC Beschreibung Beispiel
SetChannel Channel Wert CV Channel Wert Setzt den Kanal Channel auf den Wert Wert. SetChannel 1 200 -> CV 1 200
SC Channel Wert CV Channel Wert Kurzschreibweise für SetChannel. SC 1 200 -> CV 1 200
GetChannel Channel CV Channel Wert Fragt den Wert des Kanals Channel an. GetChannel 1 -> CV 1 200
GC Channel CV Channel Wert Kurzschreibweise für GetChannel. GC 1 -> CV 1 200
GetAllDevices Liste der Geräte Fragt alle in DMXControl vorhandenen Geräte ab. GetAllDevices ->
1. PAR-1
2. PAR-2
...
10. Botex SP-1500 Stroboskop
GetDeviceInfo DeviceID Geräteinformationen Fragt genauere Informationen zum Gerät mit der Nummer DeviceID ab. Dabei existieren für PanTilt drei Möglichkeiten: No, Coarse, Fine. Bei Coarse oder Fine folgen die Kanäle von Pan Tilt, bei einem Scanner also: PanTilt: Coarse 0 1 bei einem 16 bit Scanner PanTilt: Fine 0 1 14 15. Die Reihenfolge ist dabei Pan Tilt PanFine TiltFine. Nach Channels: Anzahl wird eine Liste mit allen Namen der Kanäle angehängt, wie sie im DDF hinterlegt sind. GetDeviceInfo 10 ->
Name: Botex SP-1500 Stroboskop
StartAddress: 257
PanTilt: No
Channels: 2
Channel1: Frequenz
Channel2: Helligkeit
StartChannelNotification StartChannel EndChannel Keine Aktiviert die Asynchrone Information über Kanaländerungen. Wenn sich in DMXControl ein Kanal zwischen StartChannel und EndChannel ändert, sendet DMXControl eine Nachricht mit dem neuen Wert. Ein weiteres senden von StartChannelNotification überschreibt den alten Bereich. StartChannelNotification 1 10. Nach Wertänderung von Kanal 5 auf 255: -> CVC 5 255
StopChannelNotification Keine Deaktiviert die Benachrichtigung über Kanaländerungen. StopChannelNotification
GetCommandPossibilities Dropdown-Index Vorgänger-Index Liste der Möglichkeiten Ein Befehl setzt sich aus einzelnen Teilen zusammen. Modul, Gerät/Funktion, Kanal, .... Da die folgende Auswahl auf der vorhergehenden basiert, muss der Reihe nach von vorne abgefragt werden. Mit GetCommandPossibilities 1 erhält man eine Liste der Modulmöglichkeiten. Jede Möglichkeit hat eine ID. Mit GetCommandPossibilities 2 3 erhält man die Auswahl für Gerät/Funktion, auf Basis von Modul 3. GetCommandPossibilities 1 ->
1. Deaktiviert
2. Audio
3. Audiotrack
...
RunCommand Index1 Index2 Index3 Flags Value Keine Mit diesem Command führt man den Befehl aus. Index1, Index2 und Index3 sind dabei die Indizes von GetCommandPossibilities.

Flags ist ein binär codierter Integer. Bit 0 steht für Umschalt-Modus und Bit 1 für Angegebenen Wert verwenden. Value ist ein DMX-Wert in Prozent von 0.000 bis 100.000 (für zukünftige 16Bit Werte).

RunCommand 2 5 3 0 0.000


GetCommandPossibilities und RunCommand

Um einen spezifischen Befehl mit RunCommand auszuführen, muss man wissen, welche ID der Befehl besitzt. Diese ID kann man mit dem Aufruf GetCommandPossibilities sehr einfach herausfinden. Man arbeitet sich dabei Schritt für Schritt von der obersten Ebene (1) bis zur benötigten Ebene (z.B. 3) herab. Die erste Ziffer hinter dem Aufruf stellt die Ebene dar, auf der man sich gerade befindet. Die folgenden Ziffern stehen für die IDs der Ergebnisse der Abfragen der vorherigen Ebenen. Daher ist es sehr wichtig, dass die Ebenen der Reihe nach durchlaufen werden.
Um z.B. einen Effekt auf diese Weise zu starten, könnte dies wie folgt aussehen: Ein Aufruf des Befehls GetCommandPossibilities 1 liefert die folgende Tabelle, wobei es hier keine zweite Ziffer gibt, da wir uns auf der höchsten Ebene (Ebene 1) befinden. Installierte Plugins reihen sich in die Liste ein, wenn vorhanden.

  1. Deaktiviert
  2. Audio
  3. Audiotrack
  4. BeatTool
  5. DMX-Ausgabe
  6. DMXIn-Remote
  7. Effekte
  8. External Action (Plugin)
  9. Geräte
  10. Gruppenauswahl
  11. Joystick
  12. KommandoBox
  13. Kommandozeile
  14. Master
  15. MIDI-Remote
  16. OSC-Receiver (PLugin)
  17. Sound Analyzer
  18. Submaster
  19. Szenenbibliothek
  20. Szenenliste
  21. Textbuch

Nun fragen wir die Optionen für die ID 7 Effekte für die Ebene 2 ab: GetCommandPossibilities 2 7 liefert uns die ID, der Optionen, auf die zugegriffen werden kann. Auswahl und Sprünge der Effekte wäre in diesem Fall über die IDs 1-4 möglich. Die selbst programmieten Effekte haben die IDs ab 6:

  1. Alle
  2. Ausgewählter
  3. Nächster
  4. Vorheriger
  5. ----
  6. [EFFEKT 1]
  7. [EFFEKT 2]
  8. [EFFEKT 3]
  9. ...

Der nun folgende Aufruf für die 3. Ebene GetCommandPossibilities 3 6 zeigt in unserem Beispiel [Effekt 1] die für diesen Effekt möglichen Funktionen. DMXControl gibt folgende Liste zurück:

  1. Auswählen
  2. Start/Stop
  3. Start
  4. Stop
  5. Beschl. setzen
  6. Intens. setzen
  7. Nächster Schritt
  8. Wiederh. ein/aus

Mit RunCommand 7 6 3 lässt sich der Effekt 1 starten oder mit RunCommand 7 6 4 stoppen. Für den Effekt 3 wären das die Aufrufe RunCommand 7 8 3 und RunCommand 7 8 4. Wenn noch Werte mit übertragen werden müssen, werden diese hinten angehängt: RunCommand 7 6 3 0 0.000. Andere Aufrufe funktionieren nach dem selben Prinzip.


Wichtiger Hinweis Evtl. hilft es beim Verständnis sich die Programmierung der Kommandobox anzusehen. Die Spalten bei der Buttonprogrammierung "Modul", "Gerät/Funktion", "Kanal", "Flags" und "Wert" entsprechen den Ebenen, IDs und Werten des RunCommand-Befehls.

Links und Referenzen

Links

  1. PDA-Fernbedienung Software: http://www.dmxcontrol.de/files/pda-2-dmxc/PDA-2-DMXC_1.0_Setup.exe

Tutorials

  1. PDA-2-DMXC Tutorial