谁用过libusb-1.0.9这个库啊~~请教问题啊
#include <stdio.h>
#include <libusb.h>
static void printdev(libusb_device *dev)
{
struct libusb_device_descriptor desc;
struct libusb_config_descriptor *config;
libusb_device_handle *dev_handle;
int fd;
char data[4]={'1','2','3','4'};
int actual;
int r = libusb_get_device_descriptor(dev, &desc);
if (r < 0)
{
printf("获取设备描述符失败!\n");
return;
}
printf("产品ID:%d\n",desc.idVendor);
printf("供应商ID:%d\n",desc.idProduct);
libusb_get_config_descriptor(dev,0,&config);
printf("该设备的端口地址:%d\n",config->interface->altsetting->endpoint->bEndpointAddress);
printf("该设备的接口值:%d\n",config->interface->altsetting->bInterfaceNumber);
fd = libusb_open(dev,&dev_handle);
//printf("dev_handle:%d\n",dev_handle);
if(fd < 0)
{
printf("%d,can't open the device by device mode !\n",fd);
}
else
{
printf("open success!\n");
}
if(libusb_kernel_driver_active(dev_handle, 0) == 1)
{
printf("有驱动!\n");
}
else
{
printf("无驱动!\n");
}
r = libusb_claim_interface(dev_handle,0);
printf("%d\n",r);
if(r < 0)
{
printf("Claim Failed!\n");
return ;
}
printf("Claim Success!\n");
r = libusb_bulk_transfer(dev_handle, (129| LIBUSB_ENDPOINT_OUT),data ,4,&actual, 0);
if(r == 0 && actual == 4)
printf("write Successful!\n");
else
printf("write Error!\n");
printf("------------------------------------------\n");
}
int main(void)
{
libusb_device **devs;
libusb_context *ctx =NULL;
int r;
ssize_t cnt;
ssize_t i;
r = libusb_init(&ctx); //初始化,并且建立一个会话
if(r < 0) {
printf("初始化失败:%d\n",r);
return 1;
}
libusb_set_debug(ctx, 3); //设置信息等级三级
cnt = libusb_get_device_list(ctx, &devs); //获取的设备列表
if(cnt < 0)
{
printf("获取设备列表失败!\n");
return -1;
}
printf("%d个设备在列表中!\n",cnt);
for(i = 0; i<cnt ;i++)
{
printdev(devs[i]);
}
libusb_free_device_list(devs, 1);
libusb_exit(ctx);
getch();
return 0;
}
那个申请接口的时候总是返回错误,错误原因是资源繁忙啊。。。我就插着个U盘。其他什么都没做啊 ,这是什么情况啊。