同步方式
libusb_bulk_transfer(devh, ep_bulk, buf, CAM_BUF_SZ, &len, timeout);
进入libusb研究,发现libusb是采用异步方式来实现的。在do_sync_bulk_transfer中:
staticintdo_sync_bulk_transfer(structlibusb_device_handle *dev_handle,
unsignedcharendpoint,unsignedchar*buffer,intlength,
int*transferred,unsignedinttimeout,unsignedchartype)
{
libusb_fill_bulk_transfer(transfer,dev_handle,endpoint,buffer,length,
bulk_transfer_cb,&completed,timeout);
transfer->type =type;
r =libusb_submit_transfer(transfer);
if(r <0){
libusb_free_transfer(transfer);
returnr;
}
while(!completed){
r =libusb_handle_events(HANDLE_CTX(dev_handle));
}
}
这里libusb_fill_bulk_transfer来填充bulk transfer,然后libusb_submit_transfer提交bulk transfer,最后用libusb_handle_events来等待完成。当收到