Hi all,
I'm having a problem with a USB device created by a person I work with. The device is
a simple counter that counts from 0 to 255. It is implemented as an HiD device. When
I use the Hidview tool in Windows, I can grab the counter value from the USB device.
However, when I run code in Linux, a call to select(...) blocks, waiting for the
device to become available for reading. The device has a green LED which blinks
faster when it is being read, and slowly when not. When I run the select() code, the
LED blinks quickly, indicating that it is being read. The code is as follows:
nt main (int argc, char **argv) {
fd_set fdset;
.
.
.
ioctl(fd, HIDIOCGVERSION, &version);
printf("hiddev driver version is %d.%d.%d\n",
version >> 16, (version >> 8) & 0xff, version & 0xff);
ioctl(fd, HIDIOCGDEVINFO, &dinfo);
printf("HID: bus: %d devnum: %d ifnum: %d\n",
dinfo.busnum, dinfo.devnum, dinfo.ifnum);
ioctl(fd, HIDIOCGNAME(sizeof(name)), name); // THIS ALL WORKS
FINE
printf("HID device name: \"%s\"\n", name);
ioctl(fd, HIDIOCINITREPORT, 0);
log_output = stdout;
FD_ZERO(&fdset);
fprintf( stderr, "Did the FD_ZERO thang\n" );
/*
* This will infinitely wait for data to come off the hid device.
* It is canceled by ^C.
*/
while (1) {
FD_SET(fd, &fdset);
rd = select(fd+1, &fdset, NULL, NULL, NULL); // blocks
.
.
.
}
.
.
.
Basically, I'm not sure if anything works after that because select always blocks.
Any help is appreciated. Thanks much,
Aaron Greene
-------------------------------------------------------
This SF.net email is sponsored by: Etnus, makers of TotalView, The best
thread debugger on the planet. Designed with thread debugging features
you've never dreamed of, try TotalView 6 free at www.etnus.com.
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel