From: Jeffrey P. <jm...@ya...> - 2008-08-10 22:38:06
|
Thanks Tim. on the device i am using, you set the analog-to-digital sample frequency up to 500Khz (500k samples/second) before you start to read the samples what i am seeing is that bulk_read call times out when the clock speed increases beyond about 200Khz, or at a lower clock speed as the volume of data requested grows; a number of reads successfully complete; sometimes most of the data is read, before the timeout occurs on the last reads required, or so I am now claiming the interface and then just calling bulk_read() in a loop, until all the requested data is read. I have tried using nanosleep() with up to 1ms delay before successive calls to bulk_read to not hog the processor as well. i am not doing any prints or other stmts between each call to bulk_read. i first had a separate thread from my main application thread (only 2 threads) and then tried to do everything in a single thread. this significantly improved the situation but the problem still exits. i also took some print stmts out that were in the read loop, and as expected this also increased the performance. i do not think i am running optimized code (gcc), and may try that, but doubt it will make much difference. as i mentioned before, under windows, up to several Megabytes of data can be successfully read at max clock speed (500Khz). the USB part in the device is the Cypress Easy-Usb FX2LP. I wonder if I cannot empty the FIFO in the part fast enough. I am not sure what happens when the FIFO gets full in the part, or my device. i know there is no buffer between my device's A/D converter and the FX2LP part. i think there have been a number of other people using libusb with that part and wonder if they have seen anything similar ? i know it depends on the device and the processor etc, but i am running a 2Ghz dual core which is not running anything but Vista (not trivial) so think there should be enough CPU to handle this. does anyone have any ideas,comments or suggestions about what i can do ? thank you for the help ! jeff Peace,Love,Happiness, and Fun, Jeff 8558-361-5751 --- On Fri, 8/8/08, Tim Roberts <ti...@pr...> wrote: From: Tim Roberts <ti...@pr...> Subject: Re: [Libusb-devel] Device sends data, but libusb timesout To: lib...@li... Date: Friday, August 8, 2008, 2:35 PM Jeffrey Price wrote: > Hi there, > > I am running libusb .1 on Suse Linux 10.2 and talking to a verndor's > product that converts Analog data to Digital and pumps the result over > the USB port. The device works fine under Windows, and is a > commercial product so I am pretty sure it is doing the right thing. > When I sniff the packets it also looks like the device is doing the > right thing, eg IN packet is sent from my host to the device and it > returns the (correct) data,but libusb reports a timeout. in the libusb > code, when I stepped through it, > > on line 280 of linux.c, bytesdone = 0. > > Any ideas on why, and / or how I can find out why ? > In your previous code, you open, set config, claim, write, release, close; then open, set config, claim, read, release, close. Are you still doing that? It's possible that setting the configuration and setting the interface are causing some kind of reset action to take place in the device. Usually, an application will open and claim once only, then read and write as much as necessary, then close before exiting. -- Tim Roberts, ti...@pr... Providenza & Boekelheide, Inc. ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ Libusb-devel mailing list Lib...@li... https://lists.sourceforge.net/lists/listinfo/libusb-devel |