Dateiformat *.led-Dateien (LedWalker-Software)

  • Hallo zusammen,


    da es auch für eigene Controllerprojekte interessant sein dürfte, zu der LedWalker-Software kompatibel zu sein (so dass man die Dateien mit selbiger erstellen kann), habe ich mal angefangen dem Format mit dem Hexeditor auf den Grund zu gehen. Die Pixelsuppe ist eher unspeltakulär, und ein paar Bytes im Kopf der Datei (Anzahl Frames, FPS, Format/IC) konnte ich schon zuordnen.


    Danke an alle die daran mitwirken, das Format zu knacken, ich editiere hier regelmäßig den aktuellen Stand rein:



    Gruß Domi

  • Sehr suspekt das Ganze...


    Von 1-65535 Frames repräsentieren das 8. und 9. Byte die Anzahl, allerdings in umgekehrter Reihenfolge:
    01 00 = 1
    FF 00 = 255
    00 01 = 256
    FF FF = 65535
    Wenn ich Stachels Datei mit 80047 Frames "kompiliere", erhalte ich im 8. Byte FF, im 9. Byte AF und im 10. Byte (welches vorher immer 00 war) steht 38. Wenn ich aber nun davon ausgehe, dass das das nächst höherwertige Byte für die Anzahl ist, kommt dabei 3715071 raus ;(

  • Also mehr Frames zu erzeugen, ist eigentlich nicht so kompliziert. Einerseits kann man den Finger auf einer Taste lassen (z.B. "D"), andererseits kann man Kopieren und Einfügen, und das auch mehrfach. Leider spielt mein Rechner bei 20000 Frames, die ich einfügen wollte, nicht mehr mit.


    Bei mir stand in zwei Versionen in Byte 9 bzw. 10 "0x04" bei 1024/1041 Frames. Kann durchaus etwas anderes an der Stelle sein.

  • Ich glaube ich habe mich oben im Beitrag verzählt, deswegen hier einfach mal Screenshots aus dem Hexeditor:





    Der rote Bereich ist der, den ich für die Frameanzahl vermutete.
    In der ersten Grafik sind es 255 Frames, wozu die FF im 9. Bit passen.
    In der zweiten Grafilk sind es 256 Frames, wozu die 01 im 10. Bit und die 00 im 9. Bit passen, wenn sie in umgekehrter Reihenfolge dargestellt sind.
    In der dritten Grafik sind es 80047 Frames und die nach obiger Idee dargestellten 38AF passen leider rein garnicht (das sind nur 14511).


    Der grüne Bereich ist im übrigen die Framerate (0x01-0x28 für 1-40 FPS) und der blaue Bereich ist der Typ:
    0x00: DMX
    0x01: SPDMX512
    0x02: SPI595
    0x03: SCDMX
    0x04: LPD6801
    0x05: SD600
    0x06: WS2801
    0x07: MY9221
    0x08: MBI6024
    0x09: CYT3005 und TLS3001
    0x0A: TM1803
    0x0B: LPD8806


    Ich denke ich werde morgen mal ein Tastatur-/Mausmakro schreiben, was mir Dateien mit den entsprechenden Anzahlen Frames für die signifikanten Stellen (Word/Byte-Spung) erstellt.

  • Wie ist das denn, sind in der Datei von Dir und Stachel die selbe Anzahl Pixel drin...?


    Ich hatte damals auch mal das Format "untersucht", und dabei festgestellt, dass die Länge der Datenblöcke mit der Anzahl der Pixel variiert - also z.B. Du hast nur 30 Pixel (= 90 RGB-Werte), dann ist ein Block 256 Byte lang (oder waren's 512...?), wenn's über ne bestimmte Grenze geht, dann halt 512 (bzw. 1.024) usw. - weiss nicht mehr genau, jedenfalls kamen die RGB-Daten nicht "dicht an dicht", sondern immer mit Lücken dazwischen, eben so, wie wenn es bestimmte Blockgrößen gibt...


    also wird das wohl evtl. so sein, dass das nicht die Anzahl Frames, sondern die Anzahl der Speicherblöcke ist...? - wenn Du jetzt mit ein paar Pixeln die Datei erstellt hast, so dass 1 Frame nur einen Block belegt, dann stimmt das ja mit dem 01, FF, usw., weil ja ein Block eben einem Frame entspricht - wenn Stachel mehr Kanäle benutzt (er hat doch 100 Pixel = 300 Byte RGB), dann ist bei ihm natürlich ein Block länger und damit auch der Wert größer...?


    dumm nur (für meine Theorie), dass sich 3715071 nicht glatt durch 80047 teilen lässt... :D - aber evtl. wird da auch ein "halber Block" am Schluß berücksichtigt o.ä. ...?


    Ich würde auf jeden Fall mal in die Richtung weiterforschen, also mal ne kleine Animation mit 255 Frames aber mehr als 85 Pixeln machen, und dann schauen, ob immer noch FF 00 00 drin steht, oder mehr...


    EDIT: Mehr Verwirrung:

    8. Byte FF, im 9. Byte AF und im 10. Byte (welches vorher immer 00 war) steht 38


    In der dritten Grafik sind es 80047 Frames und die nach obiger Idee dargestellten 38AF passen leider rein garnicht (das sind nur 14511).

    Was stimmt denn nun...? - zuerst heisst es "FF AF 38", und dann (wie auch im Screenshot zu sehen) "AF 38 00".... ?(


    (Mal davon ausgegangen, dass das "erste" Byte bei Dir das "0." ist, sonst stimmt das gar nicht zusammen, lt. "menschlicher Zählweise" ist das 8. Byte ja *immer* FF, das ist ja das links vom rot markierten Bereich...?!?)


    Und noch was: das allererste Byte ist in den ersten beiden Screenshots "0C", im dritten (dem "fraglichen") dann "2C" - könnte also evtl. die Länge eines Frames im Speicher sein...?

    It's only light - but we like it!


    Da es sich in letzter Zeit häuft: Ich beantworte keine PNs mit Fragen, die sich auch im Forum beantworten lassen!
    Insbesondere solche von Mitgliedern mit 0 Beiträgen, die dann meist auch noch Sachen fragen, die bereits im entsprechenden Thread beantwortet wurden.
    Ich bin keine private Bastler-Hotline, technische Tipps etc. sollen möglichst vielen Lesern im Forum helfen!

    2 Mal editiert, zuletzt von Pesi ()

  • Was stimmt denn nun...? - zuerst heisst es "FF AF 38", und dann (wie auch im Screenshot zu sehen) "AF 38 00".... ?(

    Zitat

    Ich glaube ich habe mich oben im Beitrag verzählt, deswegen hier einfach mal Screenshots aus dem Hexeditor:

    Sorry dafür - werde ich reineditieren.

    Wie ist das denn, sind in der Datei von Dir und Stachel die selbe Anzahl Pixel drin...?

    Nein leider nicht, meine Testfiles sind 2x2px und das von Stachel isst 10x10px. Deswegen werde ich mal selber größere Testfiles erstellen, um nicht mehrere Dinge gleichzeitig zu ändern.

    Und noch was: das allererste Byte ist in den ersten beiden Screenshots "0C", im dritten (dem "fraglichen") dann "2C" - könnte also evtl. die Länge eines Frames im Speicher sein...?

    Das erste Byte (und 2 weitere) ändern sich jedenfalls in abhängigkeit der Pixelanzahl, aber schon bei kleineren Unterschieden (2x2 vs. 4x4px). Dem werde ich noch auf den Grund gehen.



    Von reilo bekam ich per PN einen ganz guten Tipp, was mir bisher garnicht aufgefallen war:

    Zitat

    - 80047 Frames


    Byte 9 und Byte 8 passen bei dieser Größe auch, nur sind die Stellen für so eine große Zahl ausgegangen. Irgendwo in der Datei muß jetzt eine 1 anstatt 0 stehen, das ist die führende Ziffer. Das vorhandene 0x38 und 0xAF braucht nur eine 0x01 vorne dran, dann passt alles. 0x138AF = 80047.

    Danke schonmal dafür, ich werde mal nach dem einen Bit suchen ;)

  • Es gitb eine weitere PN von reilo mit neuen Erkenntnissen die ich euch nicht vorenthalten möchte:

    Ja, bei 4x4px steht dort in der Tat 0x30 0x00. Symmetrisch dazu scheinen sich auch das 13. und 19. Byte zu ändern. Dort steht das gleiche bei meinen Versuchen.


    Zitat

    Ich kann nicht im Thread schreiben (Lobby), drum die PM.

    Ich habe Lötmeister per PN darum gebete, den Thread aus der Lobby zu schieben, damit sich auch nicht-Lobbyisten daran beteiligen können. Die gesammelten Erkentnisse können am Ende dann immernoch hier zusammengetragen werden können.