Seit 3.2 DDF beschädigt

  • Hallo,

    nachdem Update gehen zwei von mir selbst erstellte DDFs nicht mehr. Ich schreibe das bewusst in diesem Thread, da es sich ja offensichtlich um ein Problem der Software und nicht des DDFs handelt, denn bisher ging es. Ich habe dann probiert das DDF zu modifizieren, damit es vielleicht doch funktioniert, habe es aber nicht zum laufen bekommen:

    Hier das XML:

    Fehlermeldung: Fehler in Zeile 11, Position 18, "=" darf nicht in Namen enthalten sein.


    Außerdem hatte ich in der ürsprünglichen Variante, welche auch schon nicht ging, den Dimmer in einer Zeile geschrieben, so wie es im Wiki steht.

    Vielleicht hat ja jemand eine Idee, woran das liegen könnte, denn musste gestern ein komplette show mit dem Generic Geräten fahren:cursing:


    Viele Grüße

    Johannes

  • Genau an der angegebenen Stelle ist der Fehler. Du hast dort <tag=abc geschrieben. Das ist ungültiges XML ganz unabhängig von den DDFs. Einem XML Tag kann man direkt keinen Wert zuweißen, deswegen wird das Gleich-Zeichen als Teil des Tag Namens gelesen, was Verboten ist und entsprechend den Fehler generiert.

    Das muss immer so ausehen: <tag param="value".

    Das sollte aber in der Form dann schon immer nicht funktioniert haben, wenn das wirklich doch mal so funktioniert haben sollte war das ein Fehler in DMXControl der zurecht behoben wurde. Fehlerhaftes XML sollte nicht eingelesen werden dürfen.


    Eventuell Hilft dir das, ich kenn mich selbst leider noch zu wenig mit der DDF Syntax aus, als ich dir jetzt eine Korrektur anbieten könnte.


    Viele Grüße

    Moritz

  • Hallo Johannes!


    Ich habe mir mal dein DDF angesehen und im Bereich des Dimmers eine sehr interessante Implementierung entdeckt. Diese entspricht so fast gar keiner Vorgabe (ich habe zumindest nichts vergleichbares gesehen), wenn du mal auch einen Blick ins Wiki wirfst.


    Du hast folgendes versucht:

    XML
    <dimmer>
      <dmxchannel="0" minddmx="0" maxdmx="255" minval="0" maxval="100" />
    <dimmer/>

    Richtig und an dieser Stelle aus ausreichend wäre aber die ganz simple Implementierung:

    XML
    <dimmer dmxchannel="0" />

    Der Dimmer verhält sich (so lese ich es in deinem DDF) "normkonform", dass heißt bei DMX-Wert 0 sind die LEDs komplett aus und bei DMX-Wert 255 hast du die maximale Helligkeit. Möchtest du trotzdem den Wertebereich selbst vorgeben, dass müsste der Code so aussehen:

    XML
    <dimmer dmxchannel="0">
      <range type="linear" mindmx="0" maxdmx="255" minval="0" maxval="100" />
    </dimmer>

    Ganz wichtig ist hierbei, dass du den Tag dimmer auch wieder richtig schließt nämlich durch </dimmer>. Bei dir ist das / auf der falschen Seite.


    Um solche grundlegenden Fehler im XML-Syntax zu vermeiden, empfehle ich dir, die DDFs - wenn du sie von Hand schreibst - mit Notepad++ und dem verfügbaren Plugin XML-Tools zu erstellen. Dieses Plugin in Notepad++ fängt nämlich falsche oder fehlende Tags ab oder weißt dich auch darauf hin, wenn du bei den Attributen ein " vergessen hast.


    DMXControl 3 wird parallel von Version zu Version auch immer stringenter, was Unsauberheiten in den DDFs anbelangt. Auf diese Weise soll so die Qualität der DDFs stetig verbessert werden, was sich aber am Ende auch auf die Stabilität von DMXControl 3 positiv auswirkt. Denn jede nicht vollständig eindeutige Implementierung in einem DDF kann den Kernel unnötig beschäftigen, was dann (das ich jetzt mal so eine Mutmaßung) bei großen Projekten mit vielen komplexen DDFs zu Performance-Problemen führt. Im konkreten Fall ist der Fehler aber so eindeutig, dass der Kernel das DDF sozusagen für die Nutzung sperrt, was durch den Log-Eintrag im Kernel zu erkennen ist:

    C#
    2019-10-26 18:34:35,935 [Log-Thread] WARN  org.dmxc.lumos.Kernel.Devices.Factory.AbstractDDFDeviceFactory - Warning while loading DDF: Cameo Flat Par Can RGB 10 (6 channel).xml
    System.Xml.XmlException: Das '='-Zeichen, hexidezimaler Wert 0x3D, darf nicht in einem Namen enthalten sein. Zeile 11, Position 15.

    Was mich aber hier wundert, dass du das DDF in einem älteren Projekt so verwenden konntest, denn die oben genannte Implementierung wird auch von DMXControl 3.1.3 entsprechend bemängelt. Daher kann ich nur mutmaßen, dass du im Nachgang das DDF nochmal geändert, aber nicht im Projekt ersetzt hast. Bekanntermaßen lädt DMXControl 3 ja alle DDFs zu einem Projekt immer aus dem Projekt-zip, selbst wenn im Verzeichnis UserDevices eine geänderte Version neueren Datums verfügbar wäre. Den Inhalt der DDFs selbst kann DMXControl 3 aber nicht verändern, das ist nur mit Hilfe des DDFCreators oder anderen Tools wie Notepad++ oder der klassische Editor von Windows möglich.


    In diesem Sinne - viele Grüße, Stefan.

  • Aus dem WIki:


    Quote
    Code
    <strobe dmxchannel="0">  
        <strobetype dmxchannel="1" />  
        <step type="open" mindmx="0" maxdmx="5" />  
        <range type="linear" mindmx="6" maxdmx="255" minval="0.5" maxval="25" >    
            <step handler="strobetype" mindmx="6" maxdmx="42" />  
        </range>  
        <range type="random" mindmx="6" maxdmx="255" minval="0.5" maxval="25" >    
            <step handler="strobetype" mindmx="43" maxdmx="85" />  
        </range>
    </strobe>

    Strobe-Frequenz auf DMX-Kanal 1, Strobe-Effekt auf DMX-Kanal 2:

    • Kein Strobe bei DMX-Wert zwischen 0 und 5.
    • Linearer Strobe im Bereich zwischen den DMX-Werten 6 und 255 mit Geschwindigkeit von 0,5 Hz bis 25 Hz, bei einem DMX-Wert zwischen 6 und 42 auf DMX-Kanal 2.
    • Zufälliger Strobe im Bereich zwischen den DMX-Werten 6 und 255 mit Geschwindigkeit von 0,5 Hz bis 25 Hz, bei einem DMX-Wert zwischen 43 und 85 auf DMX-Kanal 2.
    Code
    <dimmer dmxchannel="0">  
        <range type="linear" mindmx="0" maxdmx="127" minval="0" maxval="100" />
    </dimmer>




    Wie kommt ihr nun auf minddmx ?!?

  • 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.