新建一个C项目,然后修改.pro文件,添加LIBS一行

TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt LIBS += "D:\Projects\qt\usbtest\libusb.a" SOURCES += main.c

源码:

#include <stdio.h>
#include "lusb0_usb.h" #define MY_VID 0x04f3
#define MY_PID 0x0103
#define m_dev_DATA_SIZE 8 /* Number of bytes to get at once */ usb_dev_handle * my_usb_get_device_list(void)
{
char str[];
struct usb_bus *bus;
struct usb_device *dev;
usb_dev_handle *udh; for (bus = usb_get_busses(); bus; bus = bus->next) {
for (dev = bus->devices; dev; dev = dev->next) {
printf("VID:PID = %x:%x\n", dev->descriptor.idVendor, dev->descriptor.idProduct);
if ((dev->descriptor.idVendor == MY_VID) && (dev->descriptor.idProduct == MY_PID))
{
udh = usb_open(dev);
printf("dev opened: %s\n", dev->filename);
printf("Device Protocol : %d\n",dev->descriptor.bDeviceProtocol);
printf("Report Length : %d\n",dev->descriptor.bLength);
printf("Decriptor Type : %d\n",dev->descriptor.bDescriptorType);
printf("End Points : %d\n",dev->config->interface->altsetting->bNumEndpoints);
printf("Interface Class : %d\n",dev->config->interface->altsetting->bInterfaceClass);
printf("Protocol : %d\n",dev->config->interface->altsetting->bInterfaceProtocol);
printf("Interface Number: %d\n",dev->config->interface->altsetting->bInterfaceNumber);
printf("Device Filename : %s\n",dev->filename); usb_get_string_simple(udh, dev->descriptor.iManufacturer, str, sizeof(str));
printf("Device Manfucaturer : %s\n", str);
usb_get_string_simple(udh, dev->descriptor.iProduct, str, sizeof(str));
printf("Product Name : %s\n", str);
usb_get_string_simple(udh, dev->descriptor.iSerialNumber, str, sizeof(str));
printf("Device Serial Number: %s\n", str);
printf("End point addresses : 0x%x\n",dev->config->interface->altsetting->endpoint->bEndpointAddress); return udh;
}
}
} return NULL;
} int main(void)
{
int ret, i;
char data[m_dev_DATA_SIZE] = {};
char data_zero[m_dev_DATA_SIZE] = {};
usb_dev_handle *udh;
//char ShiftMouseScrollDown1[] = {0x02,0xf3,0xff}; memset(data_zero, , m_dev_DATA_SIZE); usb_init(); /* initialize the library */
printf("buses:%d\n", usb_find_busses()); /* find all busses */
printf("devices:%d\n", usb_find_devices()); /* find all connected devices */ udh = my_usb_get_device_list();
if (!udh) {
printf("usb dev handle is NULL\n");
} if(usb_set_configuration(udh, ) < )
{
printf("Could not set configuration\n");
usb_close(udh);
return ;
} if(usb_claim_interface(udh, ) < ) //claim_interface 0指向第一个设备
{
printf("Could not claim interface\n");
usb_close(udh);
return ;
} while()
{
ret = usb_interrupt_read(udh, 0x81, data, m_dev_DATA_SIZE, );
if (!memcmp(data, data_zero, m_dev_DATA_SIZE)) {
continue;
}
printf("%02X ", (unsigned char)(data[]));
//printf("%c", (unsigned char)(data[2])-4+'a');
} usb_release_interface(udh, );
usb_close(udh);
printf("m_dev closed\n"); printf("END!\n"); return ;
}

需要将libusb0.dll和libusb0.sys添加到Sytem32目录下面去,否则运行就列机。

这时上面的程序还不能打印出USB设备来,是因为还需要安装USB的驱动。

运行下载文件夹中的bin/inf-wizard应用程序,选中你的USB设备然后一步一步地next,最后install,就可以了。

再次运行上面的源码编译得的程序,就可以看到真正的枚举输出了。

输入abcdefg时的反应:

另外参考:http://www.embed-net.com/thread-18-1-1.html

QT Creater与libusb使用的更多相关文章

  1. Qt Creater中的.pro文件和.pri文件

    初学Qt,使用Qt Creater打开Demo "QT 3D Basic Shapes C++ Example",发现除了pro文件外,还有一个pri文件,在此小白一下! *.pr ...

  2. Qt Creater之hello world

    下载Qt Creater,博主是Qt5.2.0版本: 15:17:16 打开界面,选择文件新项目, 文件名:hellodemo: 生成的文件有.pro时项目文件,包含项目的信息,mainwindow. ...

  3. Qt Creater中Clang-format的使用

    起因在于习惯性的想格式化代码,发现Qt Creater默认居然是没有代码格式化的,只有一个缩进,搞毛线啊!!! 搜索了下,倒是很容易就搜到了,Qt Creater中有个插件:beautifier,在 ...

  4. QT Creater 配色方案及下载

    打开QT Creater的工具--选项--文本编辑器--字体和颜色,复制一份配色方案:Vim (dark) ->Vim (dark) (copy) 更改想更改的任何内容的配色.其中,修改后的文件 ...

  5. Qt 4.8.5 + MinGW32 + Qt creater 安装

    Qt 4.8.5 + MinGW32 + Qt creater 安装 下载文件 文件版本 Qt 4.8.5 MinGW 0.4.4 Qt Creator 2.8或2.8.1 gdb-7.4-MinGW ...

  6. 1.1 Qt Creater使用Python开发桌面软件的操作流程

    Qt Creater及Python的下载与安装过程不再赘述,读者可自行在网上搜索相应的下载与安装方法. 首先我们打开Qt Creater,单击"Create Project"按钮或 ...

  7. QT Creater环境搭建

    需要的软件包: 1.qt-win-opensource-4.8.5-mingw.exe //Qt库 2.MinGW-gcc440_1.zip //QT编译器 3.qt-creator-opensour ...

  8. QT Creater + vs2010 发布程序

    这几天帮同学写了个简单的gui应用,用的qt5.0.2_msvc2010.写的程序需要在一台没有装过vs和qt的机子上运行. 在release下编译运行通过后,把相应的依赖dll加入到exe相同的文件 ...

  9. Qt Creater 制作汽车仪表盘

    最近项目用到了模拟仪表,网上下载大神编写的按个仪表Meter没有成功 转战 QWt 编译后,在creater中仍然无法使用,只可以在代码中使用 百度说是我编译的版本不对 扔到 开始做自己的 这个用到了 ...

随机推荐

  1. linux编curlDLL库so

    转载请注明出处:帘卷西风的专栏(http://blog.csdn.net/ljxfblog) curl库是一个非常强大的http开源库.c++里面可以非常方便的和httpserver交互. 近期项目開 ...

  2. MySQL Study之--Mysql无法启动“mysql.host”

    MySQL Study之--Mysql无法启动"mysql.host" 系统环境: 操作系统:RedHat EL55 DB Soft:  Mysql 5.6.4-m7 通过源代码包 ...

  3. ORA-00838: Specified value of MEMORY_TARGET is too small(转)

    1. 测试环境OS: RHEL5U5(32bit)DB: Oracle 11.2.0.3.0(32bit) 2.   异常原因. 2.1 oracle 11g默认sga_target为0,如下图, O ...

  4. Python 新浪微博中提取最常见转载的微博转载了几次,username,内容

    CODE: #!/usr/bin/python # -*- coding: utf-8 -*- ''' Created on 2014-7-4 @author: guaguastd @name: fi ...

  5. Mac OS X中报:java.io.UnixFileSystem.createFileExclusively(Native Method)的简单原因

    这个博客太简单了!想到可能有其它朋友也遇到这个问题,就记录一下. 今天把一个之前在Windows上的Java项目放到Mac OS X上执行,本来认为应该非常easy的事情,结果还是报: Excepti ...

  6. ASP.NET MVC Boilerplate简介

    ASP.NET MVC Boilerplate简介 ASP.NET MVC Boilerplate是专业的ASP.NET MVC模版用来创建安全.快速.强壮和适应性强的Web应用或站点.它在微软默认M ...

  7. sscanf()函数的用法

    来自:http://blog.csdn.net/tigerjibo/article/details/6442151 sscanf 名称: sscanf() - 从一个字符串中读进与指定格式相符的数据. ...

  8. crawler_wireshark 过滤基础知识

    一.IP过滤:包括来源IP或者目标IP等于某个IP比如:ip.src addr==192.168.0.208  or ip.src addr eq 192.168.0.208 显示来源IP       ...

  9. DevExpress中获取RichTextEdit中RichEditControl的两种方式

    方式一: var rte = sender as RichTextEdit; control = rte.Controls[] as RichEditControl; 方式二: PropertyInf ...

  10. 【高德地图API】那些年我们一起开发的APP—即LBS应用模式分享

    原文:[高德地图API]那些年我们一起开发的APP—即LBS应用模式分享 摘要:利用地图API都能做些什么应用呢?应用商店里所有的分类,都可以结合上LBS来丰富应用.除了传统的生活服务应用,还有新潮的 ...