Ok, ich hab mir das Protokoll angeschaut.
Auf Seite 19 findest du eine Paketbeschreibung für dein Paket welches du brauchst.
Ich würde ein packed Record definieren der der Spezifikation entspricht. Diesen kann du dann Blockweise einlesen.
Der Trick ist an der Stelle Length. Anschliessend werden dann die Daten übertragen.
Delphi-Quellcode:
artdmx_header = packed record
ID: String[8]; // Art-Net #0
OpCode: word;
ProtVerH,
ProtVer: Byte;
Sequence: Byte;
Physical: Byte;
Universe: Word;
case laenge: boolean of
true: (
Lengthhi,
lengthlow: byte;
);
false: ( Length: word );
end;
Den vollen Record vom Interface Lesen und dann noch in length Anzahl von Bytes weiterlesen.
Dort stehen dann die Kanalwerte. Also nach dem Record bis Anzahl.