Hohe Datenraten mit FT232H

OP #3085524
Lesenswert?

Hallo allerseits!

Ich beschäftige mich gerade mit dem FT232H und möchte die 
Eingangspuffergröße mittels FT_SetUSBParameters() hochsetzen. Da stehe 
ich leider auf dem Schlauch - die Funktion ist in dem vorhandenen 
include-File "FTD2XX.h" nicht referenziert, auch die DLL-Ladefunktion 
kennt die Routine nicht. Ich nutze das Beispiel "dlpvcc2" (Example 1).

Meine Frage ist jetzt: Wo finde ich die Funktion?

Viele Grüße

Frank13
Persönliche Seite #3085553
Lesenswert?

> die Funktion ist in dem vorhandenen include-File
> "FTD2XX.h" nicht referenziert

Mal die Datei im aktuellen Treiberpaket angesehen?

Die in
http://www.ftdichip.com/Drivers/CDM/CDM%202.08.28%20WHQL%20Certified.zip

enthält sehr wohl das hier:
1
  FTD2XX_API
2
    FT_STATUS WINAPI FT_SetUSBParameters(
3
    FT_HANDLE ftHandle,
4
    ULONG ulInTransferSize,
5
    ULONG ulOutTransferSize
6
    );

Von wann ist Deine "FTD2XX.h"?
OP #3085645
Lesenswert?

Hi,

Das war zumindest ein Fehler. Die Headerdatei habe ich ersetzt, die 
DLL-Aufrufe habe ich auch um den Betreffenden erweitert. Jetzt bekomme 
ich "nur" noch einen Linkerfehler (nicht aufgelöstes externes Symbol)... 
Hat da jemand eine Idee? Ich kenne mich mit den VisualC++ Compiler 
leider nicht sehr gut aus. Ich vermute noch irgendwo einen Verweis in 
eine alte DLL-Version.

Viele Grüße

Frank
OP #3085772
Lesenswert?

Hi,

Ich bin schon wieder etwas weiter: Der Funktionsaufruf klappt jetzt 
(zumindest bekomme ich ein FT_OK zurück) - das Beispiel ist doch 
ziemlich arg verwurschtelt. Die Lib war schon vorhanden aber der Aufruf 
der Funktionen geht über eine Unterfunktion die ich übersehen hatte.

Ich komme aber immer noch nicht über ca. 4 MByte pro Sekunde, egal was 
für eine Puffergröße ich nehme. Mal sehen, wo da noch der Wurm steckt...

Viele Grüße

Frank
#3085994
Lesenswert?

Frank Bußmann schrieb:
> 4 MByte pro Sekunde

Klingt als würdest du pro Transfer nur 512 Byte anfordern. Dann kommt 
man nämlich ziemlich genau bei 4MB/s raus. Forder mal viel größere 
Blöcke an. In einen USB HighSpeed Microframe passen bis zu 11 Pakete zu 
je 512 Byte, erst dann erreicht man die volle Geschwindigkeit. Wenn du 
weniger pro Transfer anforderst, packt der Controller weniger in den 
Frame und der Rest des Frames ist verloren.
OP #3086452
Lesenswert?

Hallo allerseits,

Ich glaube, ich habe den Fehler endlich eingegrenzt: Das 
Beispielprogramm ist Murks! Es ist sehr verschachtelt programmiert und 
absolut schlecht nachzuvollziehen. Mir ist während des Debuggens 
aufgefallen, dass die Ausleseroutine für den FTDI innerhalb eines 
periodisch auftretenden Ereignisses implementiert ist in dem auch die 
Oberfläche aktualisiert wird. Das heißt: Das Ganze wird über einen Timer 
angestoßen und damit habe ich minimal 1 ms Abfragetakt - und das dabei 
nichts rumkommt ist klar.
Ich werde morgen mal die Ausleseroutine in einen extra Thread auslagern.
Für heute reichts... ;-)

Vielen Dank für die Hilfe soweit! Manchmal sieht man den Wald vor lauter 
Bäumen nicht...

Viele Grüße

Frank13

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