Serielle Schnittstelle Interruptgeschwindigkeit

Gast #760335
Lesenswert?

Hallo zusammen,

wie schnell kann ich denn Daten von der seriellen Schnittstelle mit dem 
PC abholen. Ich meine damit nicht etwa die Baudrate, sondern wie schnell 
mir z.B. die Serialport-Komponente in .Net einen Interrupt generiert.

Hintergrund ist foldender: Ich empfange einen Datenstring. Bei einem 
Event lese ich die Daten ein und prüfe ob ob der String komplett ist 
oder nicht. Ist der String komplett sende ich den nächsten Befehl an den 
Zielcontroller. Dabei habe ich festgestellt, dass je nachdem wie lang 
der Empfangsstring (variable Länge) ist eine variable Zeit zwischen 
Datenempfang und Daten senden liegt. Zu Debug-Zwecken habe ich bei jedem 
RX-Event ein Byte über die Schnittstelle gesendet, um zu Überprüfen, wo 
die Zeit verloren geht. Dabei habe ich festgestellt, dass die 
Debug-Bytes in praktisch konstanten Zeiten gesendet werden. Allerdings 
mit demselben Delay wie bei der normalen Datenübertragung.

Der Puffer der seriellen Schnittstelle wird wohl in konstanten 
Zeitabständen gelesen, worauf bei Datenempfang ein Event generiert wird. 
Jenachdem wie lang meine Empfangsdaten sind, verliere ich dabei immer 
Zeit. Gibt es eine Möglichkeit das zu umgehen?
Gast #760381
Lesenswert?

Die 115k kann man eh nur bei Blockuebertragung ausfahren. Sobald man 
delays drin hat, geht die Performace in die Knie. In einem embessed 
System auf 115k zu gehen macht das system nu anfaellig gegen 
kommunikationsbedingten Leistungsverlust. Lieber 9600 Kontinuierlich, 
als 115k Burstweise. Bei 115k kann jede 100us ein Interrupt kommen.
#760408
Lesenswert?

Üblicherweise ist für Interrupts der Device Driver im Betriebssystem 
zuständig, nicht ein Software-Layer wie DotNet.

Ausserden muss man in diesem Zusammenhang zwischen einer echten 
seriellen Schnittstelle im PC und einer per USB angeschlossenen 
unterscheiden. Letztere wird dank USB nie schneller als 1ms pro 
Transaktion, egal bei welcher Bitrate, nur die Grösse der Transaktionen 
variiert dann noch.
Gast #760429
Lesenswert?

Das heißt für mich, dass ich auch mit anderen Komponenten das Verhalten 
nicht ändert?

Ist allerdings ein "richtiger" Comport. Das ich bei VCOMs das Problem 
habe war mir bewusst. Wobei die ja einen größeren Puffer haben? Dann 
würde sich der Durchsatz je nach Datenvolumen zumindest erhöhen, oder?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren