Re: Problem mit serieller Schnittstelle - Datenverlust

Tech-Archive recommends: Repair Windows Errors & Optimize Windows Performance



Peter Götz schrieb:
"So 90.0000" hört sich aber nicht nach einer wirklich
exakt definierten Datenmenge an, die im Zusammenhang

Ich habs halt nicht im Kopf, die Anzahl ist auf jeden Fall immer gleich

... und genau das dürfte die Ursache für Dein Problem
sein. Polling auf den Datenpuffer des SerialPort-
Objektes ist eher ein Lotteriespiel.

Warum? Wenn der Buffer groß genug ist, um ALLE Daten aufzunehmen, darf doch auch ein Polling in keinem Fall schiefgehen.
Vor allem nicht in Abhängigkeit der Daten (und dabei bleibe ich).

.BaudRate
3000000 (nicht wundern, ist ein spezieller USB/Seriell
Adapter)

Was ist das denn konkret für ein Adapter (Hersteller/Typ)?

Je nach Leitungslänge und Leitungsgüte dürften dabei
mit hoher Wahrscheinlichkeit reichlich Datenübertraguns-
fehler anfallen.

Die Länge der seriellen Datenleitungen beträgt nur wenige mm, vom USB/Seriell Wandler zum Microcontroller.
Es könnte tatsächlich sein, daß in Abhängigkeit der Daten hier Übertragungsfehler auftreten (ich hab mal so eine Sauerrei gehabt, das bei einem 5 Meter USB-Kabel die Übertragung komplett hängen blieb, wenn die Daten alle um Null waren). Ich kann gerne mal die Datenrate senken und vergleichen, das wäre tatsächlich noch eine Idee.

Dennoch bekomme ich über API immer die richtige Anzahl an Daten (und dabei bleibe ich auch).

Warum arbeitest Du nicht mit einer für die V24 / RS232
angepassten, deutlich niedrigeren Übertragungsgeschwindigkeit?
Deine Datenmenge von ca. 90.000 Byte ist ja nicht wirklich
sehr gross.

Es können später auch noch mehr Daten werden. Auf 1500000 müßte ich aber gehen können.

Was alles nichts daran ändert, daß irgendwo ein Unterschied
zwischen NET und API ist.

Ich denke mal, Du vergleichst da Äpfel mit Birnen.

Warum?

Fakt ist: Mit NET-Handling gehen unter bestimmten Umständen Daten verloren, mit anderen Daten passiert das nicht.
Fakt ist: Mit API-Handling kommen immer alle Daten an.

Da bleibt bei mir immer noch ein sehr großes Fragezeichen.

In jedem Fall würde ich Dir dringend empfehlen, die für das
Serialport-Objekt vorgesehene Ereignissteuerung via
DataReceived zu nutzen.

Kann ich gerne mal versuchen. Und ich werde mir einen Serial-Port-Sniffer installieren.

Gruß,
Martin
.



Relevant Pages