Hallo,
ich habe eine Elektronik, auf der ein FTDI USB-Seriell Wandler verbaut
ist. Um mal eine Abschätzung für dessen Latenzzeit zu erhalten, setze
ich ein Port-Pin, sende ich ein paar Zeichen, sende bei Empfang dieser
Zeichen sofort etwas zurück und lösche das Port-Pin bei Empfang in der
Elektronik. Auf dem Rechner läuft ein kleines Programm, dass ich in .NET
geschrieben habe. Die Daten lese ich per Event aus. Mal davon abgesehen,
dass die ermittelten Zeiten um den Faktor 5-6 streuen (2,5ms bis etwa
15ms), möchte ich gern wissen, ob ich das Ergebnis auch auf andere
(ähnliche?) Rechner übertragen kann oder ob die Bedienung des Ports von
der Performance der Hardware und irgendwelchen
Betriebssystemeinstellungen äbhängt. Ich habe gerade keinen anderen
Rechner zur Hand. Windows XP oder neuer würde ich mal als Betriebssystem
voraussetzen.
Grüße, Alex
Alexander H. schrieb:> ob die Bedienung des Ports von der Performance der Hardware und> irgendwelchen Betriebssystemeinstellungen äbhängt.
Da gibt es zum Beispiel SerialPort.ReadTimeout (und entsprechende
Einstellungen bei allen anderen Sprachen, Treibern, und
Betriebssystemen).
Wenn dein Rechner gerade nichts zu tun hat, schläft die CPU; das
Aufwecken würde aber nicht mehrere Millisekunden dauern.
Das Problem ist nicht so sehr die Geschwindigkeit des Rechners, sondern
wie schnell er dazu kommt, dein Programm auszuführen. Du könntest
probieren, Process.PriorityClass hochzudrehen.
Nachschauen FTDI beschreibt es für die eigenen Produkte
Zeitscheiben, Polling und alles andere was USB langsam macht
www.ftdichip.com/Documents/AppNotes/AN232-04.pdf
Hallo Clemens,
vielen Dank für die Antwort. Ich möchte die Zeit gar nicht verbessern.
Grundsätzlich benötige ich eine Abschätzung für die Zeit vom Verlassen
des UART der Elektronik bis die Daten in der PC-Software angekommen
sind. Das ist sozusagen meine Unschärfe, mit der ich leben muss. Da ich
das nicht messen kann, habe ich den oben beschriebenen Weg gewählt und
Daten hin und her gesendet. Dabei habe ich nun festgestellt, dass die
Zeit ziemlich stark variiert und mich nun gefragt, ob das bei anderer
Systemkonfiguration des Rechners noch schlechter/besser wird. Momentan
bin ich bei einem zehntel dessen, was ich verschmerzen kann, hin und
zurück wohlegemerkt. Soweit ist ers mal alles gut.
Grüße, Alex
Alexander H. schrieb:> Dabei habe ich nun festgestellt, dass die> Zeit ziemlich stark variiert und mich nun gefragt, ob das bei anderer> Systemkonfiguration des Rechners noch schlechter/besser wird.
Wenn dein Programm lange nichts gemacht hat und gerade ein Backup oder
Virenscanner läuft, dann ist es möglich, dass dein Programm auf die
Platte ausgelagert wurde. Wegen der anderen Plattenzugriffe könnte es
dann vielleicht erst nach mehreren Sekunden wieder ausgeführt werden.
Solche "Extremsituationen würde ich mal ausschließen". Die eigentliche
Software wird in der Regel nur gestartet, wenn auch damit gearbeitet
wird. Das Dokument von Wolfang ist aber bezüglich der Problematik recht
aufschlussreich.
Grüße, Alex
Du kannst dem PC kein spezifisches Zeitverhalten zusagen. Weshalb ist
die Zeit wesentlich, und was soll das Ganze?
Allenfalls muss man der externen Hardware erweiterte Funktionalitaet
zuschreiben.
Wenn meine (selbstgebaute) externe Hardware mit dem PC kommuniziert, so
gehe ich von gar keinem Timing aus. Die Hardware muss ihre
Funktionalitaet von selbst erfuellen, der PC dient nur dem Interface
zwischen Mensch und Maschine. Falls es eine Sicherheitfunktion
erfordert, zB dass eine Heizung nicht immer laeuft, so hat die Hardware
eine Timeoutfunktion. Wenn sich der PC nicht innerhalb meldet wird
abgeschalten. Der PC kann ja auch keine Zeit haben, am Booten sein, oder
sonstwas.
So richtig prall finde ich das auch nicht, ist aber Kundenwunsch. In der
Hardware läuft im uC ein Timer, der durch eine recht präzise RTC extern
getaktet wird. Wunsch ist, dass beim Reset des Timers per UART ein
Kommando an den Rechner gesendet wird, damit "Synchronität" besteht. Man
könne mit 200ms Versatz leben. Deshalb die Frage nach der Latenzzeit des
FTDI. Mit dem Dokument von Wolfgang und dem, was ich probiert habe, kann
ich zumindest auf die Umstände hinweisen.
Grüße, Alex