libusb开发包中的接口使用问题
最近小弟在准备在linux下用libusb开发包写一个用户空间的mass storage驱动程序。在网上也找了许多例子,但是用起来都有问题,一时也找不到解决办法,在此请教各位大侠,望不吝指教:
进行bulk传输时,调用接口usb_bulk_write 总是出现问题,返回错误码有时是-2,有时是-16,这些错误码不知道代表什么意思。代码如下:
int main()
{
struct usb_bus *busses, *bus;
device_handle *handle = NULL;
int c, i, a;
usb_init();
usb_find_busses();
usb_find_devices();
busses = usb_get_busses();
for (bus = busses; bus; bus = bus->next) {
struct usb_device *dev;
for (dev = bus->devices; dev; dev = dev->next) {
/* 找到我想要操作的设备 */
if ( dev->idVendor == 0x0204 && dev->idProduct == 0x6025 ){
/*这里我发送的是一个包含INQURY命令的cbw数据包,事实上,可以使用usb_bulk_write接口发送任何的数据至设备*/
c = usb_bulk_write(handle, 0x01, cbw, sizeof(cbw), 1000);
if ( c < 0 ) {
/* 向设备发送数据失败 */
printf("bulk write error. errorcode(%d)\n", c);
return 1;
}
}
}
}
return 0;
}
请问:
1.在调用usb_bulk_write接口之前所做的准备工作就这些吗?是不是需要其他的初始化动作,比如调用usb_set_configuration重新配置设备,等等?
2.我调用usb_bulk_write接口的方法是否正确?
3.现在的情况是,按照这种方式,我试了好几个接口,usb_set_configuration,usb_set_altinterface ,usb_resetep,usb_claim_interface接口都不好用,总是报错。我想应该是我在调用这些接口之前少做了些动作,但是具体原因不太清楚。
多谢各位大侠多多指教,小弟感激不尽啊。
进行bulk传输时,调用接口usb_bulk_write 总是出现问题,返回错误码有时是-2,有时是-16,这些错误码不知道代表什么意思。代码如下:
int main()
{
struct usb_bus *busses, *bus;
device_handle *handle = NULL;
int c, i, a;
usb_init();
usb_find_busses();
usb_find_devices();
busses = usb_get_busses();
for (bus = busses; bus; bus = bus->next) {
struct usb_device *dev;
for (dev = bus->devices; dev; dev = dev->next) {
/* 找到我想要操作的设备 */
if ( dev->idVendor == 0x0204 && dev->idProduct == 0x6025 ){
/*这里我发送的是一个包含INQURY命令的cbw数据包,事实上,可以使用usb_bulk_write接口发送任何的数据至设备*/
c = usb_bulk_write(handle, 0x01, cbw, sizeof(cbw), 1000);
if ( c < 0 ) {
/* 向设备发送数据失败 */
printf("bulk write error. errorcode(%d)\n", c);
return 1;
}
}
}
}
return 0;
}
请问:
1.在调用usb_bulk_write接口之前所做的准备工作就这些吗?是不是需要其他的初始化动作,比如调用usb_set_configuration重新配置设备,等等?
2.我调用usb_bulk_write接口的方法是否正确?
3.现在的情况是,按照这种方式,我试了好几个接口,usb_set_configuration,usb_set_altinterface ,usb_resetep,usb_claim_interface接口都不好用,总是报错。我想应该是我在调用这些接口之前少做了些动作,但是具体原因不太清楚。
多谢各位大侠多多指教,小弟感激不尽啊。
...全文
相关推荐
解决libusb库文件报错[项目源码]
本文详细介绍了解决libusb库文件报错问题的三个步骤。首先,需要安装libusb-1.0-0开发包,使用命令`sudo apt-get install libusb-1.0-0-dev`。其次,确保在代码中正确包含头文件`#include <libusb-1.0/libusb.h>`。最后,编译时需链接libusb-1.0库,使用命令`gcc -o libusb_test libusb_test.c -lusb-1.0`。作者通过实践解决了这一问题,并分享经验以避免他人踩坑。
libusb-win32-devel-filter-1.2.6.0
setool 最新刷机工具,win7系统的USB驱动
matlab usb 接口程序
matlab和usb接口的联通程序,使用mfc进行运行即可
2012版本USB读写器开发包
包括VB、VC、JAVA等开发测试工具及源码
【linux usb库源代码】基于linux c语言开发的usb通信协议封装库,包含源码,例程,以及说明文档,欢迎直接下载使用!
该资源基于Linux系统的USB通信封装库,基于libusb-1.0开发,提供了简洁易用的API接口,简化了USB设备的枚举、打开、关闭以及数据传输等操作,包含以下功能:打开USB设备,关闭USB设备,查找指定厂商和产品ID的USB设备,控制传输,批量读写,中断读写,错误处理等功能 对于项目中需要使用的,可以直接下载使用。


