| 

.NET C# Java Javascript Exception

0
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.
News:
21.06.2011
bilata 1 1
1 Antwort
1
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.
21.06.2011
Xantiva 2,3k 2 9
Da habe ich auch schon drangedacht. Nach einer gewissen zeit müssten alle Daten da sein.
Danach könnte ich es ausdekodieren.

Danke schon mal für den Anstoss
bilata 21.06.2011
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 ;)
Xantiva 21.06.2011

Stelle deine Vb-Frage jetzt!