打印
[USB接口]

用libusb-win32-bin写的USB 通信usb_close()关闭USB再打开USB通信就出错

[复制链接]
2258|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
天奕|  楼主 | 2016-1-5 22:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
int busCounts= usb_find_busses(); /* find all busses */
int devCounts=usb_find_devices(); /* find all connected devices */  
第一次打开USB的时候这两个函数的返回值是1和1,这时候USB可以正常通信,通信完成后用usb_close()关闭USB,然后再打开程序就会出错,检查发现 上面两个函数的返回值是0和0,不知道为什么,关闭USB通信后,再把软件也关闭,再重新打开软件开始才可以。但是现在 我不想每次都关闭软件,,想问问为什么用usb_close()关闭后再打开USB通信就会报错,有什么办法能解决这个问题吗?

相关帖子

沙发
天冰天降| | 2016-1-25 17:20 | 只看该作者
    struct usb_bus     *bus;
    struct usb_device  *dev;
        usb_dev_handle*                device_handle;

        char buf[16];

    usb_init();
        usb_find_busses();
        usb_find_devices();
        for (bus = usb_get_busses(); bus; bus = bus->next)
        {
                for (dev = bus->devices; dev; dev = dev->next)
                {
                        if(dev->descriptor.idVendor==VENDOR_ID&& dev->descriptor.idProduct == PRODUCT_ID)
                        {
                                device_handle = usb_open(dev);
                                if(device_handle!= NULL)
                                {
                                        if(usb_set_configuration(device_handle, 1) < 0) //
                                        {
                                                 usb_close(device_handle);
                                        }
                                        else
                                        {
                                                if(usb_claim_interface(device_handle, 0) < 0)  //
                                                {
                                                        usb_close(device_handle);
                                                }
                                                else //
                                                {
                                                        for(i=0;i<16;i++)buf[i]=0;        //preset buffer,16 bytes 0
                                                        if(usb_bulk_write(device_handle,0x01,buf,16,USB_TIMEOUT)==16)
                                                        {
                                                                if(usb_bulk_read(device_handle,0x81,buf,16,USB_TIMEOUT)==16)
                                                                {
                                                                }
                                                        }
                                                        usb_close(device_handle);
                                                }
                                        }
                                }
                        }        
                }
        }

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

126

帖子

1

粉丝