Hallo,
ich probiere gerade etwas mit dem FX2 und LibUsb unter Windows herum.
Meine Eckdaten sind:
Bulk - Endpoint
Transfer IN
512 Byte Pakete
Async - Modus von LibUsb
Die Datenübertragung funktioniert wunderbar mit ganz guten Ergebnissen
(ca. 8 Mbyte/s).
Leider ist die ganze Anwendung stark CPU lastig. Der Verdacht liegt
nahe, das meine Schleife
1 | while (!break_stream){
|
2 | event_handle = libusb_handle_events(NULL);
|
3 | if (event_handle != LIBUSB_SUCCESS){
|
4 | break;
|
5 | }
|
6 | }
|
diese CPU Last verursacht. Eine Verzögerung in dieser bringt auch einen
massiven Datenrateneinbruch mit sich.
Nun suche ich nach einer anderen Möglichkeit die libusb_handle_events
abzufragen und am Besten auch noch ein Codebeispiel dazu (Die LibUsb
examples sind da wenig aussagekräftig.)
Laut der LibUsb Dokumentation soll es eine Möglichkeit mit Threads
geben, für mich ist diese aber zu dürftig dokumentiert.
Weiterhin finde ich dort als Aussage das libusb_handle_events
eigentliche eine blockierende Funktion ist, was ich bei mir nicht
nachvollziehen kann.
Vielleicht kann jemand, der etwas Erfahrung mit LibUsb gesammelt hat,
etwas Licht für mich ins Dunkle bringen.
Gruß
AlexanderS.