Web-Interface für DMXC 2.10 (Download)

We proudly present: The release of DMXControl 3.3.3!


On September 29, 2026, we held our release show for DMXControl 3.3.3. During our usual “hour-long” session, we showed you all the new features in this version and what it now has to offer.
Read all about it in the corresponding news article: We proudly present: The release of DMXControl 3.3.3!


  • Hallo,

    jetzt, da die 2.10 RC1 allgemein verfügbar ist, will ich auch das von mir entwickelte Webinterface für die neue Terminal-Schnittstelle allgemein veröffentlichen.
    Der Funktionsumfang entspricht etwa dem der offiziellen PDA-Steuerung:
    - Kommandozeile
    - Gerätesteuerung
    - Befehle
    - Kanalübersicht
    - DIP-Rechner

    Das Web-Interface gibt es unter http://michael.kuron-germany.de/dmxc/dmxcontrol_php.tar zum Herunterladen. Nach dem Extrahieren in der Datei ./config.inc.php die IP-Adresse des DMXC-Rechners korrekt eintragen (i.d.R. 127.0.0.1). Für die Gerätesteuerung braucht man außerdem die Datei http://www.dynamicdrive.com/dynamicindex11/domdrag/dom-drag.js (aus Lizenzgründen nicht in der ZIP-Datei enthalten), die man nach ./Ger=ae=testeuerung/dom-drag.js kopieren muss.
    Für korrekte Funktion ist ein (lokaler) Webserver mit PHP5 (empfohlen: PHP 5.2.6 oder höher) erforderlich, z.B. XAMPP.
    Screenshot:
    Admin-Edit: Screenshot entfernt, da das Bild nicht mehr verfügbar ist

    Außerdem habe ich eine PHP-Klasse geschrieben, mit der diese Funktionen auch in eigenen PHP-Projekten genutzt werden können. Download unter http://michael.kuron-germany.de/dmxc/dmxc.inc.php . Folgend die Syntax:

    Code
    /* Usage: string sendCommand ( string $command ) *//* Usage: array sendCommand ( string $command , TRUE ) *//* Usage: bool setChannel ( int $channel , int $value ); $value may be 0-255 *//* Usage: int getChannel ( int $channel ) *//* Usage: array getAllDevices ( ); array keys are device IDs, array values are device names *//* Usage: array getDeviceInfo_byname ( string $device ) *//* Usage: array getCommandPossibilities_byname( string $module = NULL, string $function = NULL, strin $channel = NULL); specify up to the level you know it already *//* Usage: array runCommand_byname ( string $module , string $function , string $channel , int $flags , int $value ); $flags can be flagToggle (switch mode), flagOverride (use value), flagAskValue (ask value) or flagIgnoreZero (ignore 0) or any combination thereof combined with +; please note that all of the flags are to be specified without quotes since they are constants */


    und ein Stückchen Beispielcode, welches Kanal 1 auf 100% setzt:

    PHP
    <?php
    require_once "dmxc.inc.php";
    $dmxc = new dmxc("127.0.0.1");
    $dmxc->SetChannel(1,255)
    ?>

    Viel Spaß damit, ich freue mich über Feedback, Anregungen und Bugreports.

    Gruß,

    Michael

    Software: DMXControl 2.10.5
    Hardware: Digital Enlightenment USB-DMX-Interface
    MIDI-Faderpult: Behringer BCF2000, Firmware 1.10

    Edited 3 times, last by JPK (July 22, 2017 at 9:12 PM).

  • Hallo Michael.

    Ich finde die Sache sehr interessant, habe auch mal etwas rumprobiert, und dabei ne eigene Seite geschrieben:

    http://www.ch-hoelscher.de/dmxcontrol/index.php5

    Es ist ja wirklich ne Portweiterleitung im DSL-Router, schon klappts.
    So kann ich jetzt zum testen einfach mal 4 Switch Kanäle von überall über das Internet schalten :)
    (das Notebook ist z. Zt. aus, die Seite startet also nicht ordentich, bei Interesse -> E-Mail an mich)

    Es läuft auch tatsächlich DMX-Control, die 4 Werte, die oben ausgegeben werden, werden nicht durch PHP generiert, sondern tatsächlich bei jedem aktualisieren über den Befehl "getChannel" abgefragt.
    Ich habe mich also bis jetzt auf "getChannel" und "setChannel" beschränkt, aber die Sache ist ja auf jeden Fall ausbaufähig.
    (ich denk da z.B. auch an Heimautomatisierung etc....)

    Allerdings habe ich bei dem fertigen PHP-Code von dir immer einen PHP-Fehler, vielleicht sagt dir das was, ich bin nciht ganz so fit, für mich war es mehr mal das Anwenden meiner Berufsschul PHP und MySql Kenntnisse
    (ich lass zum Spaß jede Kanaländerung mit Datum und Uhrzeit protokollieren :)

    Edited 2 times, last by JPK: Bild entfernt, da hinter Login-Barriere (July 22, 2017 at 8:25 PM).

  • Sorry für die späte Antwort.

    Anscheinend hast du den Ordner "Header" gelöscht. Dieser enthält nur ein paar Sachen, die nur auf iPhones angezeigt werden. Für diese Einbindung (die bei Nichtvorhandensein den Fehler verursacht) ist die Zeile

    Code
    include('../Header/index.html');

    , die in jeder von meinen einzelnen Komponenten in der index.php vorhanden ist, verantwortlich.

    Dieser Fehler an sich ist für die Funktion aber nicht relevant.

    Software: DMXControl 2.10.5
    Hardware: Digital Enlightenment USB-DMX-Interface
    MIDI-Faderpult: Behringer BCF2000, Firmware 1.10

  • Das mit dem Webinterface finde ich echt super.
    Und das man das ganze aus PHP ansteuern kann ist noch besser.

    Wollte schon immer mal Effekte "richtig" programmieren. Damit könnte man sich einiges an Arbeit ersparen.
    Bin mal gespannt wie schnell das ganze ist.
    Dann könnte man sich die Effekte ja vieleicht per PHP erstellen und die auch dadrüber abspielen lassen.
    Müsst man nur noch irgendwie die Beats z.b. vom AVS Plugin in PHP abgreifen können.

  • Das geht wohl eher nicht - die PHP-Steuerung ist darauf beschränkt, was die DMXC-Terminal-Schnittstelle bietet.
    Abgesehen davon hat die PHP-Schnittstelle den Nachteil, dass sie relativ langsam ist (es kann nur ein Befehl gleichzeitig abgeschickt werden, und nach jedem Befehl muss erst mal ein Timeout von einigen hundert Millisekunden erreicht werden).
    Für deine Idee ist eher die echte Plugin-Schnittstelle gedacht.

    Software: DMXControl 2.10.5
    Hardware: Digital Enlightenment USB-DMX-Interface
    MIDI-Faderpult: Behringer BCF2000, Firmware 1.10

  • Hatte ich auch schonmal dran gedacht, nen Plugin dafür zu schreiben.
    Aber dafür müsste man ja erst nen Parser entwickeln, der dann aus Scriptdateien die Effekte ausführen kann.

    Das mit dem einen Befehl aufeinmal könnte man so lösen, dass man ein PHP-Script hat, was ganze zeit im Hintergrund läuft und prüft ob irgendwelche Effekte gestartet werden sollen. Wenn das der Fall ist, wird einfach ein 2. 3. 4. Script als neuer Prozess gestartet.
    Sowas mach ich schon bei einem meiner Script. Das läuft auf meinem Server in der Console und dadurch hab ich dann quasi "Threads".

    Das Hauptscript verteilt bei mir die Aufgaben und die "Threads" schnappen sich dann die Aufgaben. Dadurch laufen ca immer 40 Scripte dauerhaft.

    Hab mal nen klitze kleines Beispiel geschrieben für nen Effekt, wie ich mir des z.B. vorstellen könnte.



    Jetzt nur noch in DMXC einen Effekt erstellen, der bei jedem Beat den Wert des Channel1 ändert.
    Und schon hat man nen kleinen Beat gesteuerten Effekt.

    EDIT: Ich merk gerade, dass es wohl doch zulangsam ist ...
    Eigentlich sollte der Effekt in einer Sekunde durchlaufen, aber auch wenn ich die Wartezeit rausnehme dauert er länger als eine Sekunde ...

  • Hi!

    Nun, ich fürchte fast diese Terminalschnittstelle weckt mehr Begeisterung als das wofür sie geschaffen wurde... :D

    Daher wirklich bitte immer dran denken: Diese Schnittstelle ist entwickelt worden um das PDA-Tool anzukoppeln. Und damit soll man auch nicht DMXC primär bedienen sondern es ist ein Hilfsmittel zum Einleuchten.

    Das ist eher wie in "guten alten Zeiten". Man ruft quasi per Telefon bei DMXC an und gibt auf der anderen Seite eine "Bestellung" auf die dann ausgeführt wird. Es ist kein Onlineshop wo man schnell mal was anklickt und beim Absenden wird auf der anderen Seite schon das Paket versendet. Dafür ist die Pluginschnittstelle da. ;)

    Ist mir schon klar, dass die nicht so einfach zu bedienen ist, aber wer viel Leistung braucht muss halt auch erstmal viel Arbeit reinstecken. :D

    Hoc
    (Auch ich ertappe mich immer wieder mehr aus dieser Schnittstelle rausholen zu wollen als möglich ist)

    Mein Equipment:
    1x Hirn | 2x Augen (leicht defekt) |2x Ohren | 1x Mund |32x Zahn (zum Teil V1.5) | 1x Handundfuß-Interface
    *SCNR*

  • Was ich noch sehr genial finden würde, wenn du noch ne Seite für Kommandobuttons bauen könntest, die auf mit Ajax arbeiten wie die Kommandozeile.

    Könnt das gut für mein iphone gebrauchen, dann könnte ich bequem die Effekte von überall im Raum steuern.

    Nen paar Fader währen auch nicht schlecht *g*

    EDIT: Ah ich hab grad kapiert, was ich in welchen Javascripts ändern muss, um die Buttons anzupassen ...
    Ich werd ma anfangen zu basteln ... ma schaun was dabei rauskommt

    EDIT2: ... anscheinend ists doch nich so einfach wie ich dachte ...
    Ich schau mal ob ich nicht MacOS in ne Vmware installieren kann. Denn dafür gibts sonen Developmentool mit dem man anscheinend ganz einfach Button usw erstellen kann ...

    EDIT3: Bin gerade am rumspielen mit den Gerätesteuerungen ... hab da einige Fehler entdeckt ... wenn ich alle raus hab, dann poste ich mal die veränderungen und die aktuallisierte version

    EDIT4:

    Doch nich soviele Fehler drin ... war nur ein Schreibfehler und deswegen hat er die Startadresse nicht hinzugefügt.

    Hab noch ne kleine Verbesserung eingebaut:
    In der Datei: dmx.inc.php
    Suche nach:

    Code
    1$deviceid = array_search($device, $this->GetAllDevices());			return $this->GetDeviceInfo($deviceid);


    und füge dadrüber ein:

    Code
    $device = stripslashes($device);

    Das behebt Fehler, wenn z.b. ein ' das im Namen des Gerätes stand escaped wurde.

    Und nu zum Schreibfehler:
    In der Datei: Ger=ae=testeuerung/index.php

    Suche:

    Code
    $startAddress = $device["StartAdress"];


    ersetze durch:

    Code
    $startAddress = $device["StartAddress"];

    Nu sollte alles laufen ;)

    Was jetzt noch schön währe, währe, wenn man noch ne Art Colorpicer einfügen könnte und wenn man das Pan/Tilt-Feld per richtigem drag bedienen könnte, also das man den Punkt ganze zeit ziehen kann.


    EDIT5 (28.8):
    Sooo hab nun schon ne schöne Seite gebastelt mit Ajax und bis zu 30 Buttons. Man kann verschiedene Bilder als Buttons nehmen und beliebigen Text rein schreiben lasse. Der Text wird automatisch Skaliert.

    Ich werde das wenn ich mehr Zeit habe so umbauen, das man des alles über nen Interface Konfigurieren kann.

    Mir ist aufgefallen, dass sich per Befehl "Start/Stop" die Effekte nur stoppen lassen und nicht starten lassen. Ist das bei der PDA-Remote auch so?

    Ich stell nacher ma die Vorabversion rein .. aber ist nur fürs iPhone/iPod optimiert bisher. Unter Win usw siehts noch nen bisl komisch aus.

  • Sooo nun mal nen neuer Post ....

    Bin soweit mit den Kommandobuttons fertig.
    Ist bisher fürs iPhone/iPod Touch optimiert, daher nur 30 Buttons.
    Aber aufm Normalen PC siehts mittlerweile auch ganz gut aus.


    Zu den Features ...

    - Einrichtung der Buttons über ein Webinterface
    - Es können beliebige Grafiken als Buttons verwendet werden (Ich hab mir nen paar farbige Buttons in DMXC gemacht und die dann ausgeschnitten)
    - Die Beschriftung kann nach belieben geändert werden
    - Die Schriftgröße passt sich automatisch dem Button an, so das immer der ganze Text sichtbar ist nur halt mehr oder weniger klein
    - Die Buttons können mit sämmtlichen Befehlen belegt werden
    - Die Auswahl der Befehle erfolgt über das Menü was bereits unter "Befehle" im Hauptmenü zufinden ist
    - Man kann Buttons einfach ausblenden, wenn man sie nicht braucht
    - Man kann für jeden Button andere Schriftarten wählen

    ToDo:
    - Vieleicht einen Zeilenumbruch veranlassen, wenn der Text für den Button zu lang/klein wird
    - Im moment dauert es 1-2 Sekunden, bis der Befehl ausgeführt wird. Ich hab noch nicht getestet, ob das an der HTTP-Verbindung liegt, oder dadran, das PHP immer eine neue Verbindung aufbauen muss. Daher bin ich am überlegen, ob ich einen Daemon in PHP schreibe, der eine dauerhafte Verbindung zu DMXC hat und dann die Befehle aus einer Warteschlange in MYSQL holt.
    - Wenn gewünscht die Möglichkeit weitere Buttons per Webinterface zu erstellen
    - Wenn ein Effekt aktiv ist, soll der Button gedrückt sein, so wie in DMXC


    Das wars eigentlich ....


    Zur Installation: In meinem Archiv sind nur die von mir veränderten Dateien vorhanden. Der Tippfehler, der in der alten Version ist, wurde auch schon verbessert.

    Ihr braucht einen MYSQL-Server ... solltet ihr aber haben, wenn ihr Xampp benutzt.
    Ihr müsst die im Archiv enthaltene dmxc.sql in die Datenbank importieren.
    In der config.inc.php können die Zugangsdaten für die Datenbank angebenen werden.

    Die Bilder für die Buttons kommen in den Ordner Kommandobuttons/Images/
    Die Schriftarten kommen in den Ordner Kommandobuttons/ttf/.

    Hinweise zur Nutzung:
    Wenn man einen Button bearbeitet, muss dadrauf geachtet werden, das ein Bild und eine Schriftart angegeben werden, da sonst der Button fehlerhaft dargestellt wird.
    In die beiden Felder kommen immer nur die Dateinamen bzw. nur der Pfad+Dateiname ab dem jeweiligem Ordner z.B. wenn die Buttongrafik in Kommandobuttons/Images/blau/button.png liegt. Muss im Webinterface blau/button.png eingtragen werden.
    Wenn das Bild direkt im Ordner Images liegt wird nur der Dateiname eingetragen

  • Quote

    In der Datei: dmx.inc.php
    Suche nach:

    Code
    $deviceid = array_search($device, $this->GetAllDevices());			return $this->GetDeviceInfo($deviceid);


    und füge dadrüber ein:

    Code
    $device = stripslashes($device);

    Das behebt Fehler, wenn z.b. ein ' das im Namen des Gerätes stand escaped wurde.


    Muss ich mir mal anschauen, danke für den Hinweis.

    Quote

    Und nu zum Schreibfehler:
    In der Datei: Ger=ae=testeuerung/index.php

    Suche:

    Code
    $startAddress = $device["StartAdress"];


    ersetze durch:

    Code
    $startAddress = $device["StartAddress"];

    Nu sollte alles laufen ;)


    Das ist kein Schreibfehler von mir, das ist ein Schreibfehler in DMXControl ;) . DMXControl bezeichnet die Startadresse intern fälschlicherweise als StartAdress, weshalb ich das auch in meinem Skript so machen musste. Ich habe mich darüber vor einiger Zeit mit Stefan unterhalten - er meinte, er könne das zwar ändern, aber dann würde die PocketPC-Remote wohl nicht mehr funktionieren. Oder ist das inzwischen geändert?

    Quote

    Was jetzt noch schön währe, währe, wenn man noch ne Art Colorpicer einfügen könnte und wenn man das Pan/Tilt-Feld per richtigem drag bedienen könnte, also das man den Punkt ganze zeit ziehen kann.


    Colorpicker ließe sich theoretisch machen, aber ich wollte meine Fernsteuerung so allgemein wie möglich halten - es lassen sich ja nicht alle Geräte über drei Kanäle mit RGB-Farbwerten versorgen, manche haben ja auch nur zwei oder einen Kanal.
    In einem PC-Browser kannst du im Pan/Tilt-Feld eigentlich schon draggen. Nur in der iPhone-Version geht es nicht, weil der iPhone-Browser das nicht beherrscht (dort kannst du nur den Zielpunkt antippen). Was allerdings nicht geht, ist, dass DMXControl den Wert des Pan/Tilt-Feldes fortlaufend übermittelt bekommt - die Terminalschnittstelle lässt sich dazu von PHP nicht schnell genug mit Daten beschicken.

    Quote

    Mir ist aufgefallen, dass sich per Befehl "Start/Stop" die Effekte nur stoppen lassen und nicht starten lassen. Ist das bei der PDA-Remote auch so?


    Ich meine mich zu erinnern, dass das ein Bug in DMXControl bzw. der Terminalschnittstelle ist.[/quote]


    Deine Kommandobox sieht echt interessant aus - Respekt.

    Quote

    - Im moment dauert es 1-2 Sekunden, bis der Befehl ausgeführt wird. Ich hab noch nicht getestet, ob das an der HTTP-Verbindung liegt, oder dadran, das PHP immer eine neue Verbindung aufbauen muss. Daher bin ich am überlegen, ob ich einen Daemon in PHP schreibe, der eine dauerhafte Verbindung zu DMXC hat und dann die Befehle aus einer Warteschlange in MYSQL holt.


    Ein Daemon mit dauerhafter Verbindung würde da auch nichts nützen, das liegt daran, wie meine PHP-Klasse mit DMXControl kommuniziert. RunCommand bekommt den Befehl im Klartext und fragt dann mit GetCommandPossibilities bei DMXControl ab, welche Zahl im Befehle-Menü der jeweilige Befehl hat. Dabei ist das Problem, dass DMXControl mehrzeilige Ausgaben (was diese Befehlslisten ja sind) nicht irgendwie besonders abschließt, sodass ich stattdessen ein Timeout nach einigen hundert Millisekunden machen muss.

    Software: DMXControl 2.10.5
    Hardware: Digital Enlightenment USB-DMX-Interface
    MIDI-Faderpult: Behringer BCF2000, Firmware 1.10

  • Quote

    Das ist kein Schreibfehler von mir, das ist ein Schreibfehler in DMXControl Augenzwinkern . DMXControl bezeichnet die Startadresse intern fälschlicherweise als StartAdress, weshalb ich das auch in meinem Skript so machen musste. Ich habe mich darüber vor einiger Zeit mit Stefan unterhalten - er meinte, er könne das zwar ändern, aber dann würde die PocketPC-Remote wohl nicht mehr funktionieren. Oder ist das inzwischen geändert?

    Also ich musste das StartAddres ändern ... nutze Version 2.10
    Hier ne Ausgabe des Arrays:

    Code
    Array ( [Name] => LED-Scheinwerfer [LED-Interface.xml] [StartAddress] => 16 [PanTilt] => No [Channels] => 10 [Channel1] => Strobe [Channel2] => Ausgang 1 [Channel3] => Ausgang 2 [Channel4] => Ausgang 3 [Channel5] => Ausgang 4 [Channel6] => Ausgang 5 [Channel7] => Ausgang 6 [Channel8] => Ausgang 7 [Channel9] => Ausgang 8 [Channel10] => nicht benutzt [.] => )

    Vorher war die Variable immer leer also waren alle geräte immer ab Kanal 1 an. hab mich denn gewundert warum des nicht richtig funktioniert.
    Wenns in 2.9 anders ist, dann könnt man ja ne abfrage reinbauen, ob was in der Variable steht.

    Quote

    In einem PC-Browser kannst du im Pan/Tilt-Feld eigentlich schon draggen.


    Im normalen Browser geht das Javascript irgendwie garnicht ...


    Quote

    Ein Daemon mit dauerhafter Verbindung würde da auch nichts nützen, das liegt daran, wie meine PHP-Klasse mit DMXControl kommuniziert. RunCommand bekommt den Befehl im Klartext und fragt dann mit GetCommandPossibilities bei DMXControl ab, welche Zahl im Befehle-Menü der jeweilige Befehl hat. Dabei ist das Problem, dass DMXControl mehrzeilige Ausgaben (was diese Befehlslisten ja sind) nicht irgendwie besonders abschließt, sodass ich stattdessen ein Timeout nach einigen hundert Millisekunden machen muss.


    Zu dem RunCommand ... man könnte doch eigentlich auch direkt die Nummern speichern.
    Hab mir deine Klasse noch nicht so genau angeschaut ...
    Vieleicht kann man da noch nen bisschen was optimieren.
    Man könnte z.B. die möglichen Befehle für Effekte usw. direkt in der Klasse definieren. Zwar währs dann nicht mehr so dynamisch, falls in einer neuen Version neue Befehle hinzukommen/wegfallen, aber das könnt man dann ja nen Update rausbringen.

    Könnte man eigentlich mit sendCommand-Befehle schicken, ohne auf die Rückgabe zu warten?
    Also das nicht mehr auf die Rückgabe gewartet wird.

    Zu der Sache mit den Slashes ... mir ist aufgefallen, das du sehr viele Variablen immer umformen lässt ... eigentlich ist das nicht notwendig ...
    Weil wenn du per Formular nen äöü oderso verschickst wird das automatisch umgewandelt und auch wenn du das dann per Get wieder holst.
    Oder brauchste des für das Javascript.

    Es ist glaub ich nicht möglich den Status eines Befehls abzufragen, so dass man realisieren könnte, das der Button gedrückt bleibt. Also genauso wie in DMXC.


    EDIT: mir ist grad aufgefallen, das ich die aktuallisierte Datei mit der Gerätesteuerung nicht mit ins Archiv gepackt hatte.

    PS: Haste eigentlich nen iPhone/iPod Touch oder simulierste des immer nur?
    Ich hab auch schon überlegt, ob ich mal versuchen soll MacOS in ne Vmware zu installieren, damit ich denn des DevKit nutzen kann um dann vieleicht sogar nen richtiges Programm zu schreiben.

  • Quote

    Also ich musste das StartAddres ändern ... nutze Version 2.10
    Hier ne Ausgabe des Arrays:

    Code
    Array ( [Name] => LED-Scheinwerfer [LED-Interface.xml] [StartAddress] => 16 [PanTilt] => No [Channels] => 10 [Channel1] => Strobe [Channel2] => Ausgang 1 [Channel3] => Ausgang 2 [Channel4] => Ausgang 3 [Channel5] => Ausgang 4 [Channel6] => Ausgang 5 [Channel7] => Ausgang 6 [Channel8] => Ausgang 7 [Channel9] => Ausgang 8 [Channel10] => nicht benutzt [.] => )

    Vorher war die Variable immer leer also waren alle geräte immer ab Kanal 1 an. hab mich denn gewundert warum des nicht richtig funktioniert.
    Wenns in 2.9 anders ist, dann könnt man ja ne abfrage reinbauen, ob was in der Variable steht.


    Ok, dann schau ich mir das nochmal an. In 2.9 gab es noch keine Terminalschnittstelle, ich habe die PHP-Klasse mit einer 2.10-Beta entwickelt.

    Quote

    Im normalen Browser geht das Javascript irgendwie garnicht ...


    Ich habe es erfolgreich in Safari 3 und Firefox 2 und 3 unter Mac OS X getestet.


    Quote

    Zu dem RunCommand ... man könnte doch eigentlich auch direkt die Nummern speichern.
    Hab mir deine Klasse noch nicht so genau angeschaut ...
    Vieleicht kann man da noch nen bisschen was optimieren.
    Man könnte z.B. die möglichen Befehle für Effekte usw. direkt in der Klasse definieren. Zwar währs dann nicht mehr so dynamisch, falls in einer neuen Version neue Befehle hinzukommen/wegfallen, aber das könnt man dann ja nen Update rausbringen.


    Die Reihenfolge der Befehle hängt auch von den installierten Plugins ab - es ist also keine gute Idee, die fest einzuprogrammieren.


    Quote

    Zu der Sache mit den Slashes ... mir ist aufgefallen, das du sehr viele Variablen immer umformen lässt ... eigentlich ist das nicht notwendig ...
    Weil wenn du per Formular nen äöü oderso verschickst wird das automatisch umgewandelt und auch wenn du das dann per Get wieder holst.
    Oder brauchste des für das Javascript.


    Ich kann mich auch nicht mehr genau erinnern, warum ich jeweils die Umformung eingebaut habe - ich weiß nur noch, dass es oft nötig war, weil die Terminalschnittstelle eine andere Zeichenkodierung verwendet als PHP normalerweise - ich habe das ganze dann halt so gelöst, Alternativ könnte man das auch mit der iconv-Erweiterung von PHP lösen, um den String in einen anderen Zeichensatz zu konvertieren, aber diese Erweiterung ist nicht auf jeder PHP-Installation vorhanden (auf meiner beispielsweise nicht).

    Software: DMXControl 2.10.5
    Hardware: Digital Enlightenment USB-DMX-Interface
    MIDI-Faderpult: Behringer BCF2000, Firmware 1.10

  • Quote

    Die Reihenfolge der Befehle hängt auch von den installierten Plugins ab - es ist also keine gute Idee, die fest einzuprogrammieren.


    Dann könnte man das vieleicht ja in einer Session zwischenspeichern.
    Denn müsste des nicht bei jedem Aufruf abgefragt werden.

    Quote

    Ich habe es erfolgreich in Safari 3 und Firefox 2 und 3 unter Mac OS X getestet.


    Hmm komisch ... bei mir läufts weder under Firefox 3 noch unter IE 7
    Vieleicht hab ich ja auch schon drin rumgepfuscht und kann mich nur nicht mehr erinnern. Aber aufm iPhone läufts ...

    Quote

    Ich kann mich auch nicht mehr genau erinnern, warum ich jeweils die Umformung eingebaut habe - ich weiß nur noch, dass es oft nötig war, weil die Terminalschnittstelle eine andere Zeichenkodierung verwendet als PHP normalerweise - ich habe das ganze dann halt so gelöst, Alternativ könnte man das auch mit der iconv-Erweiterung von PHP lösen, um den String in einen anderen Zeichensatz zu konvertieren, aber diese Erweiterung ist nicht auf
    jeder PHP-Installation vorhanden (auf meiner beispielsweise nicht).

    Jo des kann sein, das die Schnittstelle mit Sonderzeichen nich klar kommt.
    Währe aber besser, wenn du die Umwandlung nur in der Klasse machst, denn dafür ist OOP ja da, das man nicht wissen muss was die Klasse macht.
    Hatte dadurch nen paar Fehler im Script drin gehabt, weil ich denn quasi nen unescapten String mit einem excapten vergleichen wollte.

  • Quote

    Dann könnte man das vieleicht ja in einer Session zwischenspeichern.
    Denn müsste des nicht bei jedem Aufruf abgefragt werden.


    Gute Idee, ich schau mir das am Wochenende mal an.

    Quote

    Hmm komisch ... bei mir läufts weder under Firefox 3 noch unter IE 7
    Vieleicht hab ich ja auch schon drin rumgepfuscht und kann mich nur nicht mehr erinnern. Aber aufm iPhone läufts ...


    Auf dem iPhone wird ein anderes JavaScript benutzt, weil das iPhone kein Drag kann. Im IE7 geht es vermutlich aber nicht.

    Quote

    Jo des kann sein, das die Schnittstelle mit Sonderzeichen nich klar kommt.
    Währe aber besser, wenn du die Umwandlung nur in der Klasse machst, denn dafür ist OOP ja da, das man nicht wissen muss was die Klasse macht.
    Hatte dadurch nen paar Fehler im Script drin gehabt, weil ich denn quasi nen unescapten String mit einem excapten vergleichen wollte.


    Ok, das schau ich mir nochmal an.

    Im Wiki ist StartAddress jetzt auch mit dd geschrieben, also vermute ich mal, dass das korrigiert wurde. Werde ich mal testen.

    Also, vielen Dank für die Bugreports! Neue Version der Klasse kommt in den nächsten Tagen.

    Software: DMXControl 2.10.5
    Hardware: Digital Enlightenment USB-DMX-Interface
    MIDI-Faderpult: Behringer BCF2000, Firmware 1.10

  • Morgen ...

    Ich hab mir die Seite im Wiki mal angeschaut ...
    Wenn es möglich ist, das man wenn man einen Kanalwert ändert, nicht auf die Antwort warten muss sondern sofort im Programm weiter gearbeitet werden kann, ist die Schnittstelle vieleicht doch schnell genug für einige Effekte, da es dann ja quasi keinen Timeout geben würde bis auf die zeit in der der Befehl geschickt wird.

    Ich werd am WE mal testen ob das funktioniert ...
    Läuft DMXC eigentlich Multithreaded oder hat des ganze nur einen Thread?
    Wenns nur einer ist, denn währs ma interessant zu wissen, wie das mit den mehreren Effekten gleichzeitig gelöst wurde. Des könnt man denn vieleicht auf PHP übertragen, falls die Schnittstelle schnell genug ist ...

    Quote

    Auf dem iPhone wird ein anderes JavaScript benutzt, weil das iPhone kein Drag kann. Im IE7 geht es vermutlich aber nicht.

    Naja egal ... solange es aufm iPhone läuft ists mir egal ;)

    EDIT: Mir ist grad aufgefallen, das die Klasse manchmal Fehler produziert z.B. nicht lang genug wartet, bis die Befehlsliste angekommen ist. Bei Funktion hab ich dann nen Error und die Sachen die bei Funktion stehen sollten stehen bei Channel.

    http://pastebin.com/f78e152d6

    Außerdem wird die Liste der Befehle meineserachtens zu oft abgefragt ... Hier mal der Quelltext einer Ausgabe der HTML Seite.
    Hab einfach ein print_r in die Funktion sendCommand gesetzt.

    http://pastebin.com/f4ed69c00

    EDIT2: Mir ist grad nochwas aufgefallen ... anscheinend werden die Ausgaben nun doch mit einem . in einer einzelnen zeile begrenzt, so das man keinen Timeout mehr braucht.

    Ich teste mal folgenden Code ...

  • Quote

    Läuft DMXC eigentlich Multithreaded oder hat des ganze nur einen Thread?


    Single-threaded.

    Quote

    EDIT: Mir ist grad aufgefallen, das die Klasse manchmal Fehler produziert z.B. nicht lang genug wartet, bis die Befehlsliste angekommen ist. Bei Funktion hab ich dann nen Error und die Sachen die bei Funktion stehen sollten stehen bei Channel.


    Mhm, das passiert manchmal, wenn DMXControl zu langsam antwortet. Das Problem will ich aber dieses Wochenende lösen (siehe letzter Punkt in diesem Post).

    Quote

    Außerdem wird die Liste der Befehle meineserachtens zu oft abgefragt ... Hier mal der Quelltext einer Ausgabe der HTML Seite.


    Das liegt daran, dass ich kein Caching für diese Daten implementiert habe - das habe ich aber vor, am Wochenende zu tun.

    Quote

    EDIT2: Mir ist grad nochwas aufgefallen ... anscheinend werden die Ausgaben nun doch mit einem . in einer einzelnen zeile begrenzt, so das man keinen Timeout mehr braucht.


    Sehr gut - Update der PHP-Klasse kommt bald! Das war in den Betas, mit denen ich die Klasse entwickelt habe, noch nicht.


    To-Do für nächste Version der PHP-Klasse:
    - StartAddress korrigieren
    - unnötige Escapes überprüfen
    - Timeouts jetzt unnötig, weil Ausgaben mit . abgeschlossen
    - GetCommandPossibilities und GetDevices cachen
    Habe ich was vergessen?

    Software: DMXControl 2.10.5
    Hardware: Digital Enlightenment USB-DMX-Interface
    MIDI-Faderpult: Behringer BCF2000, Firmware 1.10

    Edited 2 times, last by mkuron (August 29, 2008 at 7:18 PM).

  • Ich versteh schon, des einmal das Modul abgefragt werden muss, danach die Funktion und danach der Channel

    Aber um jetzt die Sachen fürn Channel abzufragen wird folgendes alles gemacht:
    Modul
    Funktion
    Modul
    Funktion
    Channel

    Also wurden zwei Abfragen zuviel gemacht oder etwa nicht?

    Kannst ja meine Kommandobuttons direkt ins neue Release mit reinpacken.
    Soweit haste glaub ich nichts vergessen.

    Morgen werd ich die Kommandobuttons mal auf ner kleinen Party testen

  • Quote

    Ich versteh schon, des einmal das Modul abgefragt werden muss, danach die Funktion und danach der Channel

    Aber um jetzt die Sachen fürn Channel abzufragen wird folgendes alles gemacht:
    Modul
    Funktion
    Modul
    Funktion
    Channel

    Also wurden zwei Abfragen zuviel gemacht oder etwa nicht?


    Nein, das ist nötig. Das ist nämlich so eine Art Menüstruktur, wo man sich immer wieder durchhangeln muss.

    Aber dadurch, dass der Timeout ja jetzt unnötig wird, hat sich das Geschwindigkeitsproblem sowieso praktisch in Luft aufgelöst :D .

    Software: DMXControl 2.10.5
    Hardware: Digital Enlightenment USB-DMX-Interface
    MIDI-Faderpult: Behringer BCF2000, Firmware 1.10

  • Ok ... bin ma gespannt wie der Speed ohne Timeouts aussieht ...

    Vieleicht könnte man dann ja echt Effekte in PHP programmieren, nur müsst man denn halt schauen wie man des mit den mehreren Effekten in einem Thread macht, weil man denn ja nicht einfach nen sleep() in nen Effekt hauen darf, da denn ja alles stehen würde.

    Ich nehm an DMXC ist in VB6 bzw VB.Net geschrieben wa?

  • Newly created posts will remain inaccessible for others until approved by a moderator. The last reply was more than 365 days ago, this thread is most likely obsolete. It is recommended to create a new thread instead.