Ein Gerät sendet mir Daten mit verschiedener Länge. Die Anzahl der Nutzdaten steht im empfangenen Byte(5). Wie kann ich das Programm aufbauen um einen möglicht stabiles System zu bekommen.(Byteverlust) Kann ich flexibel auf die zu erwartende Datenlänge reagieren, und eine Art Endeereigniss bekommen. Es gibt leider kein Ende Zeichen.
Schau Dir mal die SerialPort Klasse des .NET Frameworks an. Du kannst dann einen Eventhandler für das "DataReceived" Event schreiben. Aber Achtung: Auch wenn Du das Paket eigentlich in einem Rutsch empfängst kann es sein, dass das Event (in seltenen Fällen) mehrfach ausgelöst wird und dann auch mal - trotz Event - keine Daten im Puffer stehen.
Ich habe es gerade so gelöst, dass ich bei jedem Ereignis den kompletten Puffer des Ports auslese (.ReadExisting) und in einen eigenen, internen Puffer schreibe. Damit kannst Du dann die weitere Verarbeitung machen.
Ich habe gerade über Nacht einen Testlauf durchgeführt: Bei ~61.000 empfangenen Datenpaketen (11 bis ca. 40 Bytes). Hat es 460x ein DataReceived Event gegeben, bei dem der Puffer dann aber leer war ... Wenn Die Antwort Dir geholfen hat, nicht vergessen das auch zu kennzeichnen ;)
Danach könnte ich es ausdekodieren.
Danke schon mal für den Anstoss