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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.