E131 / SACN flashing issue – arduino + ESP8266 based on forkineye library

12. März 2017 at 08:02
Print Friendly, PDF & Email

Meine LED-Stripes werden über  E1.31 angesteuert.Für die Test verwende ich den SACN-Viewer. Hierbei bekam ich ein kurzes aufblitzen des Stripes.
Bei anderen Testprogrammen trat dies jedoch nicht auf.
Mit WireShark habe ich mir dann die Daten angesehen und tatsächlich kamen Pakete, bei denen alle 512 DMX Pakete auf einen bestimmten Wert gesetzt waren.

SACNView verhält sich korrekt und das gleiche Verhalten kann man auch bei einigen kommerziellen Steuerungen beobachten.

Letztendlich sendet das Program ein spezielles Paket, welches gar keine DMX Nutzdaten enthält.

D.h. man muss diese Pakete ignorieren. Das Byte unmittelbar vor den DMX Daten enthält den ASC = Alternative Startcode.

Die Bibliothek von forkineye muss dann wie folgt geändert werden:

Update e131.h for two lines

  1. add the declaration for ddStartCode (2nd line)
    public:
    uint8_t data; / Pointer to DMX channel data /
                          uint8_t ddStartCode; /
    DD start code data*/
    uint16_t universe; /* DMX Universe of last valid packet */
  2. function “inline uint16_t parsePacket() {” : add the 2nd line in order to set ddStartCode
                          universe = htons(packet->universe);
                          ddStartCode = *packet->property_values;

    data = packet->property_values + 1;
  3. in the udp handler after receiving the package, you need to check the ddStartCode
                           if (e131.universe == universe && e131.ddStartCode == 0)

 

E1.31 Structure

E1.31 Package with DMX-Data

E1.31 Package with Alternative Startcode

In diesem Beispiel ist 0xdd der Start-Code, danach sind alle Kanäle auf 0x64 gesetzt.