Qt creater +libusb开发之libusb常用接口函数指导

qt 中添加libusb库

libusb 设计了一系列的外部API 为应用程序所调用,通过这些API应用程序可以操作硬件,从libusb的源代码可以看出,这些API 调用了内核的底层接口,和kernel driver中所用到的函数所实现的功能差不多,只是libusb更加接近USB 规范。使得libusb的使用也比开发内核驱动相对容易的多。
  **前期准备:**
  			1:qt creater 5.0软件
  			2:usblib源码文件libusb-win32-bin-1.2.6.0.rar
这里不赘述qt的使用,我就当你会了。
第一步:在qt工程中添加文件路径:

在这里插入图片描述
libusb.a文件是用于gcc编译器的函数链接,在源码文件下include/gcc中
第二步:
把lusb0_usb.h 这个头文件从源码目录中拷贝到工程目录下,然后在添加已有文件,编译在工程中目录。
使用libusb库的函数进行开发,所以我们得先熟悉常用API.下面就列举一些常用的函数进行解析:

  1. void usb_init(void);
    参数:无
    函数功能:libusb初始化
    返回值:无

  2. int usb_find_busses(void);
    参数:无
    函数功能:查找计算机中的bus总线
    返回值:查找到的总线数

  3. int usb_find_devices(void);
    参数:无
    函数功能:查找计算机中的设备数量
    返回值:查找到的设备数量

  4. int usb_set_configuration(usb_dev_handle *dev, int configuration);
    参数:参数1 usb设备的句柄;参数2 配置的参数(需要跟底层硬件配置bConfigurationValue一样)
    函数功能:配置这个设备信息
    返回值:返回0成功,返回负数失败

  5. int usb_claim_interface(usb_dev_handle *dev, int interface);
    参数:参数1 usb设备的句柄;参数2 配置的参数(需要跟底层硬件配置bInterfaceNumber一样)
    函数功能:注册设备接口
    返回值:返回0成功,返回负数失败

  6. int usb_control_msg(usb_dev_handle *dev, int requesttype, int
    request, int value, int index, char *bytes, int size, int timeout);
    参数:具体参数对应usb协议
    函数功能:已控制的方式进行读写数据
    返回值:返回实际读写的字节数,返回负数则失败

  7. int usb_clear_halt(usb_dev_handle *dev, unsigned int ep);
    参数:参数1 usb设备的句柄;参数2 端点地址
    函数功能:复位指定的endpoint,参数ep 是指bEndpointAddress。这个函数用来替代usb_resetep函数。
    返回值:返回0表示成功

  8. usb_dev_handle *usb_open(struct usb_device *dev);
    参数: usb设备描述符
    函数功能:打开usb设备
    返回值:返回usb设备句柄,之后的所有对usb’的操作都是通过该句柄执行

  9. int usb_close(usb_dev_handle *dev);
    参数: usb设备的句柄
    函数功能:关闭usb设备
    返回值:返回0 成功

  10. int usb_bulk_write(usb_dev_handle *dev, int ep, char *bytes, int
    size, int timeout);
    参数: 参数1 usb设备句柄,参数2,传入指定的端点号,参数3位待发送的数据地址,参数4 位数据长度,参数5超时时间
    函数功能:向usb设备批量传输数据,
    返回值:返回写入的设备的字节数,返回负数为失败

  11. int usb_bulk_read(usb_dev_handle *dev, int ep, char *bytes, int
    size, int timeout);
    参数: 参数1 usb设备句柄,参数2,传入指定的端点号,参数3位接收的数据地址,参数4 位数据长度,参数5超时时间
    函数功能:读取usb设备批量传输回来的数据,
    返回值:返回读取回来的字节数,返回负数为失败

  12. int usb_interrupt_write(usb_dev_handle *dev, int ep, char *bytes,
    int size, int timeout);
    参数: 参数1 usb设备句柄,参数2,传入指定的端点号,参数3位接收的数据地址,参数4 位数据长度,参数5超时时间
    函数功能:以中断的方式向usb设备中写入数据
    返回值:回写入的设备的字节数,返回负数为失败

  13. int usb_interrupt_read(usb_dev_handle *dev, int ep, char *bytes, int
    size, int timeout);
    参数: 参数1 usb设备句柄,参数2,传入指定的端点号,参数3位接收的数据地址,参数4 位数据长度,参数5超时时间
    函数功能:以中断的方式向usb设备中读取数据
    返回值:返回读取回来的字节数,返回负数为失败

usb接口函数的相关参数设置
libusb中接口函数的一些参数是根据实际硬件信息来决定的。比如配置模式,接口地址,接口参数,还有pid,vid等等,需要根据自身的硬件来填写。可能有人会问 我怎么知道这个usb的vid和pid是多少,每一款usb芯片都是需要购买vid的,所以这个就得需要向厂商询问这个id是多少。这样多多少少会很麻烦,推荐一个更好的方式,使用usbtreeview这个软件,可以清晰的获取usb的硬件信息、如下图:
在这里插入图片描述
想查看更多的函数,可上http://libusb.sourceforge.net/api-1.0/api.html

  • 1
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值