Windows下采用QT-minGW调用libusb库操作USB

1、概述

最近项目需要,在Windows下操作USB设备,决定采用QT进行操作,由于没有安装其它编译器,只有采用minGW编译器,网上搜了好多方法,比如hidapi库等,但还需要安装驱动,比较麻烦,我的是HID设备,采用libusb可以直接操作USB,非常方便。大致流程如下:

2、libusb库

2.1 下载libusb库

想挑战自己的可以下载libusb源码,安装minGW进行自己编译。我比较懒,直接下载别人编译好的现成库使用。link 下载xxx-binaries.7z解压即可
在这里插入图片描述

2.2 将库添加进QT工程

一开始采用在工程目录上右键->添加库的方式,无论怎么试都不行!添加外部库,报rules错误,添加系统库,找不到库文件。最后通过直接改.pro文件的方法添加成功!

win32: LIBS += -LE:\file\0_item\t\code\ -llibusb-1.0

-L后面紧跟库文件路径,采用绝对路径,-l后面跟库名

2.3添加库头文库

将libusb.h放进自己的工程目录下,在主文件中#include "libusb.h"这样就可以使用库函数了。

3 库函数的使用

可以直接看libusb.h文件及代码注释。源码是最好的老师。
基本的操作流程如下:
1.通过调用libusb_init来初始化库;(知道usb设备的ID可以直接到第4步)

libusb_init(NULL);

2.调用libusb_get_device_list来获得已经连接的设备的队列。这会创建一个libusb_device的数组,包含了所有连接到系统上的usb设备;

struct libusb_device **device_list;
int num_devices = libusb_get_device_list(NULL, &device_list);

3.循环遍历所有的设备来检查他们的选项;

for (int i = 0; i < num_devices; i++) 
{
		struct libusb_device *dev = device_list[i];
		struct libusb_device_descriptor dev_desc;
		libusb_get_device_descriptor(dev, &dev_desc);
		int id_vendor =  dev_desc.idVendor;
		int id_product = dev_desc.idProduct;
}

4.发现其中需要的一个,使用libusb_open或者libusb_open_device_with_vid_pid(当你知道这个设备vendor id和product id)来打开设备;

struct libusb_device_handle *dev_handle = NULL;
libusb_open(dev, &dev_handle);  //or
dev_handle = libusb_open_device_with_vid_pid(NULL, 0x0525, 0xa4a0);

5.使用libusb_free_device_list清除使用libusb_get_device_list获得的队列;

libusb_free_device_list(device_list, true);

6.通过libusb_claim_interface请求接口;

//获取端口
    dev = libusb_get_device(handle);
    libusb_get_config_descriptor(dev, 0, &conf_desc);
    number_interfaces = conf_desc->bNumInterfaces;

    if(number_interfaces > 0)
    {
        altesetting = conf_desc->interface[0].num_altsetting;
        if(altesetting > 0)
        {
            endpoint_num = conf_desc->interface[0].altsetting[0].bNumEndpoints;
            if(endpoint_num > 0)
            {
                for(i = 0; i < endpoint_num; i++)
                {
                    endpoint = &conf_desc->interface[0].altsetting[0].endpoint[i];
                    if ((endpoint->bmAttributes & LIBUSB_TRANSFER_TYPE_MASK) & \
                            (LIBUSB_TRANSFER_TYPE_BULK | LIBUSB_TRANSFER_TYPE_INTERRUPT))
                    {
                        if (endpoint->bEndpointAddress & LIBUSB_ENDPOINT_IN)
                        {
                            if (!endpoint_in)
                                endpoint_in = endpoint->bEndpointAddress;
                        }
                        else
                        {
                            if (!endpoint_out)
                                endpoint_out = endpoint->bEndpointAddress;
                        }
                    }
                }
            }
        }
    }
//释放配置描述符
    libusb_free_config_descriptor(conf_desc);
//卸载驱动内核
    libusb_set_auto_detach_kernel_driver(handle, 1);
//为指定的设备申请接口
    libusb_claim_interface(handle, 0);

7.读写设备(采用中断模式);

//从buf中发送32个字节出去,超时10ms
int size;
libusb_interrupt_transfer(handle, endpoint_out, buf, 32, &size, 10);
//从usb中读32个字节放入buf中
int read_num = libusb_interrupt_transfer(handle, endpoint_out, buf, 32, &size, 10);

8.通过libusb_release_interface释放设备接口;

libusb_release_interface(dev_handle, 0);

9.通过libusb_close将你之前打开的设备关闭;

libusb_close(dev_handle);

10.通过libusb_exit来关闭对话;

libusb_exit(NULL);

3.1 实例

工程源码已打包上传,欢迎下载。
软件架构
软件主要由两部分组成: 1、libusb的调用和使用; 2、qt图形视图框架的基本使用。

安装教程
使用QT打开工程文件;
修改.pro文件中的库路径;
设置kits,编译运行。

使用说明
主要介绍了libusb的设备打开,端口打开,以及中断方式传输数据;
主要介绍了Qt的视图框架QGraphicsView、QGraphicsScene和QGraphicsItems的基本使用;
利用QT的视图框架进行了基本图形的绘制,比如画点、画线、画矩形等。
链接:link

  • 4
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
### 回答1: Qt是一个跨平台的C++应用程序开发框架。"qt-opensource-windows-x86-mingw530"是QtWindows操作系统下的一个版本,使用Mingw530编译器。下载这个版本主要有以下几个步骤: 1. 打开Qt官方网站(qt.io)的下载页面。 2. 在下载页面中,找到并点击进入“Qt 开源”部分。 3. 在“Qt 开源”页面中,找到并点击“下载 Qt”按钮。 4. 在下载页面中,选择Windows操作系统,并在架构选择栏中选择x86。 5. 在编译器选择栏中,选择Mingw530编译器。 6. 选择好操作系统、架构和编译器后,点击“下载”按钮。 7. 下载完成后,双击下载的安装程序,按照提示进行安装。 8. 安装完成后,可以在Windows系统中找到已安装的Qt版本,并开始使用。 下载Qt的目的是为了能够在Windows操作系统下使用Qt进行C++应用程序的开发。Qt提供了丰富的功能和工具,可以简化开发过程,提高开发效率。通过下载和安装"qt-opensource-windows-x86-mingw530"版本,您可以在Windows系统中使用Mingw530编译器来编译和运行Qt应用程序。这个版本的Qt是开源的,意味着您可以自由地使用和修改它。无论是开发图形界面还是网络应用,Qt都具备强大的功能和良好的跨平台性能,是一个非常优秀的开发框架。 ### 回答2: qt-opensource-windows-x86-mingw530 是一个开源的 Qt 框架,适用于 Windows 操作系统。它基于 MinGW 编译器版本 5.3.0,提供了一个开发环境,用于构建跨平台的应用程序。 首先,要下载 qt-opensource-windows-x86-mingw530,可以打开 Qt 官方网站。在下载页面上,找到与你的操作系统相对应的版本。点击下载按钮后,会跳转到加载包的页面。根据你的网络速度,下载可能需要一些时间。 下载完毕后,可以双击安装程序运行。安装程序将会提供一些自定义选项,如选择安装路径和组件。根据你的需要进行选择,并点击下一步继续安装。然后等待安装程序完成安装过程。 安装完成后,你可以在指定的安装路径中找到 Qt 框架的文件。可以在安装目录中找到示例项目和文档,帮助你快速上手。另外,Qt Creator 是一个集成开发环境,也会在安装过程中一并安装。 当安装完成后,你可以开始使用 Qt 开发环境。启动 Qt Creator,并创建一个新项目。选择适当的项目模板,并按照向导填写项目信息。然后可以开始编写代码和设计用户界面。 总的来说,下载和安装 qt-opensource-windows-x86-mingw530 是比较简单的。只需要前往 Qt 官方网站,选择合适的版本进行下载并按照安装程序的指示进行安装即可。接下来,你可以使用 Qt Creator 创建和开发各种跨平台的应用程序。 ### 回答3: 要下载qt-opensource-windows-x86-mingw530,首先需要访问Qt官方网站。然后,在网站的下载页面找到适用于Windows操作系统的Qt版本。选择"open source"(开源)版本,因为它是免费提供的。接下来,找到合适的Windows x86(32位)版本并点击下载按钮。 在下载页面中,你可能需要选择适用于MinGW530的版本。MinGW是一个允许在Windows上使用GCC编译器的开发工具集。在选择合适的版本后,点击下载按钮开始下载。 下载的文件通常是一个压缩文件,你需要解压缩它。找到下载文件,并使用解压缩工具(如WinRAR或7-Zip)将其解压缩到任意目录中。 解压缩后,你可以进入Qt的安装目录并找到Qt的执行文件(如qmake.exe)。双击运行该文件,它将指导你完成Qt的安装过程。 安装完成后,你就可以开始使用Qt进行开发了。打开Qt Creator(Qt的集成开发环境)并开始新的项目,或者打开已有的项目。在项目设置中,确保你选择了正确的编译器(MinGW530)。 总的来说,下载和安装qt-opensource-windows-x86-mingw530需要访问Qt官方网站、选择合适的版本、下载、解压缩并安装Qt。完成这些步骤后,你就可以开始使用Qt进行Windows x86平台上的开发了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fanxinliuchen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值