Kommunikation über die V24 (RS232)
Problem beim Übergang von Windows 9x auf Windows XP
Applikation:
Ein mit Delphi kodiertes Programm unterhält eine Kommunikation mit einer externen Elektronik.
Die einzelne Messagelänge (Blocklänge) beträgt 71 Byte. Die Länge der Antwort beträgt 2 Byte.
Es werden 873 Blöcke übertragen.
Protokolldaten: 57600,8,n,1, kein Hardwarehandshake
Die serielle Kommuniation läuft in einem Tread.
Die Hauptapplikation führt währenddessen keine weiteren Funktionen aus.
Die Übertragungszeit eines Blockes beträgt ca. 13 mS (theoretisch und messtechnisch überprüft)
Die Verarbeitungszeit im externen µC beträgt ca. 20 mS (messtechnisch überprüft)
Dh. vom ersten Bit aus der seriellen Schnittstelle TX,
bis zur Messung des letzten Bits der 2 Byte - Antwort RX
vergehen ca. 33 mS.
Die Übertragung ist nach 38 - 40 Sekunden abgeschlossen.
Die resultierende Verarbeitung im Pc ergibt sich zu 13 - 15 mS.
Soweit so gut.
Diese Ergebnisse konnte ich auf sieben PC's unter einem Betriebssystem W9x testen.
Die PC's hatten Taktraten von 300 MHz bis zu 2400 MHz.
Die Verarbeitungsgeschwindigkeiten blieben identisch.
Problem: Die Applikation läuft auf Rechnern mit den Betriebssystemen
W2k und WXP
absolut langsam (vier Testrechner).
Bei einer Priorität tpnormal ist die Übertragung nach ca 250 Sekunden abgeschlossen.
Die resultierende Verarbeitung im Pc ergibt sich zu ca 267 mS.
Bei einer Priorität tphighest ist die Übertragung nach ca 300 Sekunden abgeschlossen.
Die resultierende Verarbeitung im Pc ergibt sich zu ca 320 mS.
Bei einer Priorität tpidle ist die Übertragung nach ca 100 Sekunden abgeschlossen.
Die resultierende Verarbeitung im Pc ergibt sich zu ca 87 mS.
Da ich auch Datenmengen > 500k übertragen muß, stehe ich bei Anwendung unter
W2k oder WXP vor einem großen Problem.
Fragen an die Gemeinschaft:
Wieso tritt bei den Betriebssystemen ein so großer Zeitunterschied auf?
Wieso dauert die Übertragung länger wenn die Priorität höher gesetzt wurde?
(Ich habe alle Stufen probiert -> Je höher desto langsamer)
Wie kann ich die Übertragung beschleunigen?
p.s. Das Prog. wurde unter Delphi 2.0dev und 6.0 getestet. Ergebnis identisch.
MfG. Uwe
MfG. Uwe
Nichts hält länger, als ein gutes Provisorium !