Entwicklernews - 16_KW25 - Umbau für DMXControl 3.1 ("FS#2045"-Umbau)

Nachdem wir in letzter Zeit einige Infos zu den Releases von DMXControl und ein paar Plugins geschrieben haben, wollen wir mit dieser Entwicklernews einmal einen Blick auf die aktuelle Entwicklung von DMXControl 3.1 werfen. Wer in letzter Zeit aufmerksam unser Forum beobachtet hat, dem ist sicher schon aufgefallen, das Arne von einem großen Umbau gesprochen hat, der gerade im Gange ist. Dieser ist ein Teil des Major-Releases 3.1 von DMXControl 3. Ihr erfahrt nun, was es damit auf sich hat, warum wir diesen Umbau durchführen, was sich dadurch ändern wird und wie weit der aktuelle Stand ist.


Hinter dem, intern auch als FS#2045-Change bekannten Umbau von DMXControl 3 steckt ein Problem mit den sog. SubProperties. Diese sind z.B. im Device Control Panel (ehemals Property Grid (PG)) sichtbar, wenn man z.B. in die Positionseigenschaft eines Gerätes schaut. Unter der Eigenschaft "Position" sind die Untereigenschaften (SubProperties) "PAN" und "TILT" angeordnet. Ähnlich dazu verhält sich die Color-Eigenschaft (SubProperties sind RGB, CMY oder HSV). Bisher wurden diese SubProperties mehr oder weniger wie eigene Eigenschaften behandelt und man kann beide Eigenschaften unterschiedlich behandeln. Dadurch ist es z.B. möglich, gleichzeitig unterschiedliche Effekte, Fannings, Fadezeiten, etc. sowohl der Eigenschaften "Position" als auch der Eigenschaft "PAN" zuzuweisen. Das ist aber sehr fehleranfällig, denn nun konkurrieren beide Geräte-Eigenschaften mit ihren unterschiedlichen Einstellungen in dem in DMXControl 3 integrierten Hardware Abstraction Layer (HAL) um die Pan-Kanal-Ausgabe. Viele Tausend Codezeilen sollen dafür sorgen, dass die Ausgabe problemlos funktioniert. Doch leider kracht es hier immer wieder, denn durch die unterschiedlichen Einstellungsmöglichkeiten der Effekte sind die nötigen Umwandlungen sehr komplex und es gibt sehr viele Eventualitäten zu berücksichtigen. Einige der daraus resultierenden Fehler sind z.B. das Werte der Position-Property nicht auf die SubProperty "PAN" übernommen werden oder das ein gleichzeitiges Setzen von Property und SubProperty zu abstürzen führt. Das es bisher nicht möglich ist, sowohl ein Colorwheel als auch RGB-Kanäle gleichzeitig in einem DDF zu haben, liegt auch an diesem Problem.


Daher haben sich die Entwickler dazu entschlossen, die SubProperties in der aktuellen Form zu entfernen. Zukünftig wird es intern nur noch die Hauptproperties (also z.B. Position und Color) geben. Die SubProperties besitzen keine eigenen Einstellungen mehr, sondern übernehmen immer die Eigenschaften der entsprechenden Haupteigenschaft (bei PAN und TILT also die Position-Eigenschaft). Im Device Control tauchen die SubProperties zwar weiterhin zur Darstellung auf, sie geben aber die Werte der Parent-Property wieder bzw. reichen bei Änderungen Werte an diese weiter. Dadurch gibt es keinen Konkurrenzkampf mehr zwischen Property und SubProperty, was auf einen Schlag sehr viele Probleme löst (wodurch auch viele Codezeilen eingespart werden können). Allerdings hat diese Zusammenlegung auch ein paar kleine Nachteile: Da nun hinter allen Subproperties immer die Haupteigenschaft steht, ist es nicht mehr möglich, unterschiedliche Eigenschaften wie z.B. Fadezeiten für PAN und TILT zu vergeben (z.B. zeitversetztes Einblenden von PAN und TILT). Das betrifft u.a. auch das Fanning, wodurch es z.B. nicht mehr möglich ist, PAN "<>" und TILT ">" zu fannen. Letzteres lässt sich aber zumindest über eine intelligente Geräteauswahl umgehen.


Stand des Umbaus: Arne hatte bisher mit seinen Umbau in einem separaten Projekt gearbeitet und hat nun seine Änderungen in das Hauptprojekt 3.1 überführt. Außerdem hat er die automatischen Tests im Build-Prozess von DMXControl 3 angepasst. Die aktuelle Version von DMXControl 3.1 ist nun also soweit wieder lauffähig. Bei internen Versuchen und Tests mit Testprojekten treten allerdings noch vereinzelt Fehler wie falsche Farben der Scheinwerfer etc. auf, die nun gefixt werden. Insgesamt ist also schon ein großer Teil des Umbaus vollzogen und damit einer der Hauptänderungen der Version 3.1 fast abgeschlossen.


Wie findet ihr, dass wir nun auch versuchen ab und an einmal einen Teilaspekt der Progrmmierung genauer zu beleuchten? Unter https://forum.dmxcontrol-proje…g/index.php?thread/11740/ könnt ihr uns eure Meinung dazu sagen.


Euer :dmxclogo DMXControl-Team :dmxclogo

Comments