linux – libusb基本的例子想要的
我正在编写用户空间程序,旨在通过usb控制某些设备,所以我决定使用libusb(libusb-1.0)向该设备发送控制消息并从该设备接收响应.
但我不断从我的代码中收到以下一堆错误(即使它是使用’sudo’执行的): USB error: could not set config 0: Device or resource busy set configuration: failed Check that you have permissions to write to 007/012 and,if you don't,that you set up hotplug (http://linux-hotplug.sourceforge.net/) correctly. USB error: could not claim interface 0: Device or resource busy claim interface: failed USB error: error submitting URB: No such file or directory bulk writing: failed USB error: error submitting URB: No such file or directory bulk reading: failed response was: 代码是: usb_dev_handle* find_device (); int main (int argc,char *argv[]) { usb_dev_handle* udev; int status; char request[] = "K1"; // 'ping' command used to check communication char response[256]; udev = find_device (); // udev is successfully found here status = usb_set_configuration (udev,0); printf ("set configuration: %sn",status ? "failed" : "passed"); status = usb_claim_interface (udev,0); printf ("claim interface: %sn",status ? "failed" : "passed"); status = usb_bulk_write (udev,3,request,sizeof (request),500); printf ("bulk writing: %sn",status ? "failed" : "passed"); status = usb_bulk_read (udev,2,response,sizeof (response),500); printf ("bulk reading: %sn",status ? "failed" : "passed"); printf ("response was: %sn",response); usb_close (udev); return 0; } 代码有什么问题?它是如何修复的? 操作系统:Ubuntu 10.10 解决方法
回答这个问题,因为我在同一个操作系统上遇到了这个问题,并且能够以下列方式解决:
下载并编译最新的libusb源代码1.0.8. 以下是我用于声称USB接口0的一些API调用: libusb_init(NULL); libusb_open_device_with_vid_pid(NULL,vendor_id,product_id); libusb_detach_kernel_driver(devh,0); libusb_claim_interface(devh,0); libusb_close(devh); libusb_exit(NULL); 以上示例中的变量描述: static struct libusb_device_handle *devh = NULL; uint16_t vendor_id; uint16_t product_id; 要获取供应商ID和产品ID,您可以运行以下命令(例如我的设备信息)
粗体冒号分隔的字符串分别包含供应商和产品ID. 如何编译代码: 我使用以下命令编译我的代码:
从提取的libusb-1.0.8目录将libtool复制到编译区域. 希望这可以帮助. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |