ILDA Parser

Allgemeine Fragen zu Lasershow Software und Show-Programmierung.
Antworten
Kitti
Beiträge: 3
Registriert: Sa 27 Nov, 2021 5:23 pm
Do you already have Laser-Equipment?: No

ILDA Parser

Beitrag von Kitti » Mo 29 Nov, 2021 5:21 pm

Hallo zusammen,

möchte folgendes realisieren: Eine vorhandene ILDA-Datei mit einem C# Programm auslesen. Problem: der notwendige "ILDA-Parser" fehlt mir. Könnte mir eventuell einer helfen, oder eine gute Internetseite vorschlagen, wo ich den ILDA-Standard erblicken kann. Wenn ich nämlich eine ILDA-Datei mit dem Texteditor öffne, kommen nur komische Ziffern und ich kann nichts erkennen.

Bitte um kurze Rückmeldungen!

MfG
Tobias

Benutzeravatar
lightwave
Beiträge: 1953
Registriert: Sa 13 Jul, 2002 12:00 pm
Do you already have Laser-Equipment?: diverse Gas-, DPSS-, Diodenlaser, vers. Scanningsysteme, 3 Selbstbauprojektoren, USB+Netzwerk-DACs, HE-Laserscan
normale Beiträge sind schwarz/weiß
Moderation ist bunt
Wohnort: Bad Aibling // (D-Bayern)

Re: ILDA Parser

Beitrag von lightwave » Mo 29 Nov, 2021 9:16 pm

Halo Tobias,
erste Ergebnisseite bei google "ilda file format":
http://paulbourke.net/dataformats/ilda/
https://www.ilda.com/resources/Standard ... rev011.pdf

Hilft?
Grüße, Georg~lightwave


Alles für Einsteiger: Link 1, Link 2, Link 3
Bild

Benutzeravatar
random
Beiträge: 2153
Registriert: Fr 03 Aug, 2001 12:00 pm
Do you already have Laser-Equipment?: Dynamics, Easy-/NetLase, NetLaseLC
Some devices that emit light.
Wohnort: München - 85540 Haar
Kontaktdaten:

Re: ILDA Parser

Beitrag von random » Sa 04 Dez, 2021 1:18 pm

Du warst doch auch schon um µC Forum unterwegs, hast mittlerweile genug Tipps zusammen? Schon erste Ergebnisse?
Grün ist blauer als Rot...
NetLase-LC Firmware.

tkaulen
Beiträge: 20
Registriert: Mi 26 Apr, 2017 5:43 pm
Do you already have Laser-Equipment?: 5 Watt RGB

Re: ILDA Parser

Beitrag von tkaulen » Do 09 Dez, 2021 10:57 pm

Suche einfach nach dem JAVA Package nl.sijpesteijn.ilda . Dann hast Du genau was Du benötigst :-)
Musst natürlich dann noch den JAVA Code nach C# umschreiben, obwohl dafür gibt es auch Converter.

VG
Thomas

Benutzeravatar
random
Beiträge: 2153
Registriert: Fr 03 Aug, 2001 12:00 pm
Do you already have Laser-Equipment?: Dynamics, Easy-/NetLase, NetLaseLC
Some devices that emit light.
Wohnort: München - 85540 Haar
Kontaktdaten:

Re: ILDA Parser

Beitrag von random » Fr 10 Dez, 2021 9:57 am

tkaulen hat geschrieben:
Do 09 Dez, 2021 10:57 pm
Suche einfach nach dem JAVA Package nl.sijpesteijn.ilda . Dann hast Du genau was Du benötigst :-)
Oh backe, was ein Monster. In C ist das wesentlich einfacher.

Ich empfehle, das ILDA Format in nested struct/union Schablonen zu verpacken, sind nur ne Hand voll Zeilen. Der Streamreader buffert immer vielfache der ILDA Pakete, und castet die Schablonen auf den Readpointer. Dann einfach die Member auslesen. Klingt kompliziert, ist aber supereinfach, und man spart sich das byteweise Durchgehen.
Vor allem braucht man überhaupt kein malloc/new, was die Sache effizient macht. So nen ILDA reader bekommt man - gut lesbar - auf 200 Zeilen code plus 100 Zeilen für die Schablonen.

Tipp (einfach so runtergeschrieben aus dem ILDA Manual):

Code: Alles auswählen

typedef _PACKED struct {       // 1..32
  _PACKED union {
    unsigned char buf[32];      // 32 byte
    
    _PACKED struct {
      _PACKED union {
        char  key[4];           // 1..4   "ILDA"
        unsigned int keyNum;    
        
        _PACKED struct {
          char key1;
          char key2;
          char key3;
          char key4;
        };
      };
            
      char  ZERO0;              // 5
      char  ZERO1;              // 6
      char  ZERO2;              // 7
      char  formatCode;         // 8      Format Code
      
      _PACKED union {
        char  frameName[8];     // 9..16  Frame Name
        char  paletteName[8];   // 9..16  Palette Name
      };
      
      char  companyName[8];     // 9..16  Frame Name
      
      _PACKED union {
        short totalPoints;      // 25..26 Total points
        short totalColors;      // 25..26 Total colors
      };
      
      _PACKED union {
        short frameNumber;      // 27..28 Frame Number
        short paletteNumber;    // 27..28 Palette Number
      };
      
      short totalFrames;        // 29..30 Total Frames
      char  scannerHead;        // 31     Scanner Head
      char  future;             // 32     Reserved for future use
    };
  };
} ILDA_Header_t;

ILDA_Header_t *ILDA_Header = (ILDA_Header_t *) GetNextBuf(readPos);
Wenn man noch etwas Performance ziehen will:

Code: Alles auswählen

  if(ILDA_Header->keyNum != 0x41444C49)  // Error in "ILDA" key
   ...
   
__asm("revsh point.x, ILDA_Format->ILDA_Format0.x");
__asm("revsh point.y, ILDA_Format->ILDA_Format0.y");
Da fehlt natürlich noch einiges, happy coding :mrgreen:

Anm.: Die structs sind natürlich dicht, das "packed" nur dient dazu, dass der Compiler nicht auf dumme Gedanken kommt, da wir ja die Serialisierung benötigen. Gibt so schöne Sachen wie padding, verschieben, zerreissen etc. So kann ein Compiler eine Struktur nicht als base+offset, sondern überall vertreut im Speicher ablegen, wenn er das für sinnvoll erachtet. Sollte hier normalerweise auch ohne PACKED nicht passieren, da ja das buffer array in der gleichen union steckt.
Grün ist blauer als Rot...
NetLase-LC Firmware.

tkaulen
Beiträge: 20
Registriert: Mi 26 Apr, 2017 5:43 pm
Do you already have Laser-Equipment?: 5 Watt RGB

Re: ILDA Parser

Beitrag von tkaulen » Fr 10 Dez, 2021 5:29 pm

random hat geschrieben:
Fr 10 Dez, 2021 9:57 am
tkaulen hat geschrieben:
Do 09 Dez, 2021 10:57 pm
Suche einfach nach dem JAVA Package nl.sijpesteijn.ilda . Dann hast Du genau was Du benötigst :-)
Oh backe, was ein Monster. In C ist das wesentlich einfacher.

Im Prinzip gebe ich Dir da zu 100% recht. Für Echtzeitstreaming mag das Performanceargument stimmen. Aber um offline eine ILDA Datei zuschreiben, kann man sich auch gekapselter Klassen bedienen. Meine Sachen die ich entwickele basieren zu 99% aus Java und 1% aus C Code, an den Stellen wo es an einer sehr engen Schnittstelle perfromancekritisch wird. Klar kann ich auch alles in Assembler oder C machen. Es geht bei einer objektorientierten Sprache wie Java in erster Linie um Produktivität und Fehlerfreiheit(nullpointer, garbage collction e.t.c.). Dabei kommt JAVA mit den neuen JIT-JVM schon sehr weit an die Geschwindigkeit von C heran. Und es ist hat sich etabliert für vieles klar abgekapselte Klassen zu benutzen. Auch wenn die einzelnen Klassen etwas Code Overhead haben, ist die Benutzung der Klassen dafür später viel übersichtlicher zu handeln.

liebe Grüße
Thomas

Benutzeravatar
adminoli
Beiträge: 3949
Registriert: Mi 04 Okt, 2006 11:37 am
Do you already have Laser-Equipment?: Dynamics und diverse Projektoren
Wohnort: nähe Schweinfurt/Würzburg, Bayern, Franken

Re: ILDA Parser

Beitrag von adminoli » Fr 10 Dez, 2021 6:16 pm

Java und Performance? Das ist ein Oxymoron! :mrgreen:

tkaulen
Beiträge: 20
Registriert: Mi 26 Apr, 2017 5:43 pm
Do you already have Laser-Equipment?: 5 Watt RGB

Re: ILDA Parser

Beitrag von tkaulen » Fr 10 Dez, 2021 11:01 pm

Es sind etwa 70 % gegenüber C++. Ja in vielen Sachen ist JAVA langsamer als C/C++. Hängt aber alles sehr vom Anwendungsfall ab.

Nach meinen Messungen starteten und liefen die Java-Versionen anfangs langsamer. Für Szenarien mit kurzer Laufzeit und wenn nur die Ausführungszeit im Mittelpunkt steht, wäre C/C++ vorzuziehen.
Aber dank der Just-In-Time-Optimierungen wurden die Java-Versionen im Laufe der Zeit schneller. In länger andauernden Szenarien werden sie sogar schneller fertig als die C/C++-Versionen, weil dann der Maschinencode an die aktuelle Situation angepasst und neu (JIT) kompiliert wird.

Benutzeravatar
random
Beiträge: 2153
Registriert: Fr 03 Aug, 2001 12:00 pm
Do you already have Laser-Equipment?: Dynamics, Easy-/NetLase, NetLaseLC
Some devices that emit light.
Wohnort: München - 85540 Haar
Kontaktdaten:

Re: ILDA Parser

Beitrag von random » Mo 13 Dez, 2021 8:35 am

tkaulen hat geschrieben:
Fr 10 Dez, 2021 11:01 pm
In länger andauernden Szenarien werden sie sogar schneller fertig als die C/C++-Versionen, weil dann der Maschinencode an die aktuelle Situation angepasst und neu (JIT) kompiliert wird.
Das würde ich gerne verstehen, wie ein JAVA (JIT-) compiliertes Programm besser sein kann als ein gut geschriebenes C oder C++ Programm :-)
Aber langsam wirds off-topic :mrgreen:
Grün ist blauer als Rot...
NetLase-LC Firmware.

Benutzeravatar
random
Beiträge: 2153
Registriert: Fr 03 Aug, 2001 12:00 pm
Do you already have Laser-Equipment?: Dynamics, Easy-/NetLase, NetLaseLC
Some devices that emit light.
Wohnort: München - 85540 Haar
Kontaktdaten:

Re: ILDA Parser

Beitrag von random » Mo 13 Dez, 2021 1:31 pm

Wie (er-)gehts dem TO mittlerweile? Schon was geschafft?
Grün ist blauer als Rot...
NetLase-LC Firmware.

tkaulen
Beiträge: 20
Registriert: Mi 26 Apr, 2017 5:43 pm
Do you already have Laser-Equipment?: 5 Watt RGB

Re: ILDA Parser

Beitrag von tkaulen » Mo 13 Dez, 2021 3:31 pm

random hat geschrieben:
Mo 13 Dez, 2021 8:35 am
tkaulen hat geschrieben:
Fr 10 Dez, 2021 11:01 pm
In länger andauernden Szenarien werden sie sogar schneller fertig als die C/C++-Versionen, weil dann der Maschinencode an die aktuelle Situation angepasst und neu (JIT) kompiliert wird.
Das würde ich gerne verstehen, wie ein JAVA (JIT-) compiliertes Programm besser sein kann als ein gut geschriebenes C oder C++ Programm :-)
Aber langsam wirds off-topic :mrgreen:
Wir könne PN schreiben, weil sonst wird das hier zu off-topic

Benutzeravatar
adminoli
Beiträge: 3949
Registriert: Mi 04 Okt, 2006 11:37 am
Do you already have Laser-Equipment?: Dynamics und diverse Projektoren
Wohnort: nähe Schweinfurt/Würzburg, Bayern, Franken

Re: ILDA Parser

Beitrag von adminoli » Mo 13 Dez, 2021 5:03 pm

Java ist für mich wie früher Basic. Man benötigt immer einen Interpreter. Mit der Performance verhält es sich dadurch ähnlich. :freak:

Das Argument für Java ist halt immer: "Läuft überall", aber halt überall schlecht. :mrgreen:

Außerdem ist JAVA seit einiger Zeit kostenpflichtig. Wenn du JAVA auf deinem Computer installierst und Unternehmer bist,
und kein Abo-Modell wählst, dann befindest du dich schon in der Illegalität.

Und Java (Oracle) kann teuer werden: Das Lizenzabonnement beginnt bei 2,13 € pro Nutzer bzw. 21,30 € pro Prozessor im Monat.

Antworten

Zurück zu „Software & Programmierung“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste