Das entspricht nicht der Definition.
Die Datei fängt 4Byte ESC-Code gefolgt von 4byte Startsequenz an.
Das Ende ist durch 4Byte ESC-Code und 1Byte Endekennung, gefolgt von 1Byte Angabe der Füllbytes VOR der Endekennung und der 2Byte CRC16 für den Inhalt zwischen Startsequenz und ESC-Kennung am Schluß gekennzeichnet.
Dann hast Du was falsch gemacht ![]()
Im der vom BSI herausgegebenen Spezifikation zur Schnittstelle steht drin, wie jeder Satz aufgebaut ist. Schaust Du IR Schnittstelle von Stromzähler auslesen - #5 by my_xy_projekt
Und ich kann Dir schon jetzt ankündigen, das Du irgendwann nicht das heraus bekommst, was Du willst.
Denn in den Sequenzen sind nicht nur die OBIS-Codes sondern u.a. auch die Transaktions-IDs drin. Die werden fortlaufend hoch gezählt.
Die tatsächliche Länge der ID versteckt sich in der ID selbst.
Bei Dir unter anderem in der ersten Sequenz:
1b 1b 1b 1b
01 01 01 01
76
05 00 a0 d9 b6 // <<TID
Deine TID ist jetzt 5 Bytes lang, incl. dem Byte in dem die Länge steht. (05)
Der Zähler wird mit jeder Message weiter gezählt. Zweite Msg:
76
05 00 a0 d9 b7 // <<TID
Nach einem
05 FF FF FF FF
folgt
06 00 00 00 00 01
Damit ist das parsen auf die Länge kaputt.
Also vielleicht doch noch mal darüber schaun....