QT Creater与libusb使用
新建一个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使用的更多相关文章
- Qt Creater中的.pro文件和.pri文件
初学Qt,使用Qt Creater打开Demo "QT 3D Basic Shapes C++ Example",发现除了pro文件外,还有一个pri文件,在此小白一下! *.pr ...
- Qt Creater之hello world
下载Qt Creater,博主是Qt5.2.0版本: 15:17:16 打开界面,选择文件新项目, 文件名:hellodemo: 生成的文件有.pro时项目文件,包含项目的信息,mainwindow. ...
- Qt Creater中Clang-format的使用
起因在于习惯性的想格式化代码,发现Qt Creater默认居然是没有代码格式化的,只有一个缩进,搞毛线啊!!! 搜索了下,倒是很容易就搜到了,Qt Creater中有个插件:beautifier,在 ...
- QT Creater 配色方案及下载
打开QT Creater的工具--选项--文本编辑器--字体和颜色,复制一份配色方案:Vim (dark) ->Vim (dark) (copy) 更改想更改的任何内容的配色.其中,修改后的文件 ...
- 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 ...
- 1.1 Qt Creater使用Python开发桌面软件的操作流程
Qt Creater及Python的下载与安装过程不再赘述,读者可自行在网上搜索相应的下载与安装方法. 首先我们打开Qt Creater,单击"Create Project"按钮或 ...
- QT Creater环境搭建
需要的软件包: 1.qt-win-opensource-4.8.5-mingw.exe //Qt库 2.MinGW-gcc440_1.zip //QT编译器 3.qt-creator-opensour ...
- QT Creater + vs2010 发布程序
这几天帮同学写了个简单的gui应用,用的qt5.0.2_msvc2010.写的程序需要在一台没有装过vs和qt的机子上运行. 在release下编译运行通过后,把相应的依赖dll加入到exe相同的文件 ...
- Qt Creater 制作汽车仪表盘
最近项目用到了模拟仪表,网上下载大神编写的按个仪表Meter没有成功 转战 QWt 编译后,在creater中仍然无法使用,只可以在代码中使用 百度说是我编译的版本不对 扔到 开始做自己的 这个用到了 ...
随机推荐
- lsblk请参阅块设备
lsblk可以查看分区和挂载的磁盘使用情况 lsblk全部的參数 -a, --all 显示全部设备 -b, --bytes 以bytes方式显示设备大小 - ...
- uva 10635 Prince and Princess(LCS成问题LIS问题O(nlogn))
标题效果:有两个长度p+1和q+1该序列.的各种元素的每个序列不是相互同.并1~n^2之间的整数.个序列的第一个元素均为1. 求出A和B的最长公共子序列长度. 分析:本题是LCS问题,可是p*q< ...
- [Unity3D]Unity3D圣骑士当游戏开发商遭遇Mecanim动画系统
大家好.我是秦培.欢迎关注我的博客.我的博客地址blog.csdn.net/qinyuanpei. 博主总算赶在这个月底写出了这篇文章.这个月由于期末考试一直没时间研究太多关于技术方面 ...
- 【leetcode】Clone Graph(python)
类似于二叉树的三种遍历,我们能够基于遍历的模板做非常多额外的事情,图的两种遍历,深度和广度模板相同也能够做非常多额外的事情,这里举例利用深度优先遍历的模板来进行复制,深度优先中,我们先訪问第一个结点, ...
- How to install IIS 7.5 on Windows 7 using the Command Line
原文 How to install IIS 7.5 on Windows 7 using the Command Line On Windows Vista, to install IIS 7.0 f ...
- iOS类别(Category)和扩展(Extension,匿名类)
Category在iOS在开发常用. 特别是对于系统扩展上课时间.我们不能继承系统类.直接添加到系统类方法,最大程度上体现Objective-C动态语言特征. #import @interface N ...
- JavaScript之函数作用域
有过类似C语言编程经验的同学应该都知道“块级作用域(block scope)”:花括号内的每一段代码都具有各自的作用域,而且在声明它们的代码段之外是不可见的.而在JavaScript中是没有块级作用域 ...
- Unity最优化摘要
我们的游戏已经wp8.ios和android平台上的线. 这是我第一次做Unity工程,过程中遇到很多困难和挫折,但是,我和小伙伴探路,现在.该游戏已经上线一段时间.而且很稳定.为Unity.我一直在 ...
- PHP第三个教训 PHP基本数据类型
学习平台: 1.php七种变量类型 2.isset和empty到这两个功能区分 3.型式试验 4.自己主动类型转换 5.类型转换 注意: 1.通过 变量->方法名 来调用. $user1 = ...
- 快速入门:十分钟学会Python(转)
初试牛刀 假设你希望学习Python这门语言,却苦于找不到一个简短而全面的入门教程.那么本教程将花费十分钟的时间带你走入Python的大门.本文的内容介于教程(Toturial)和速查手册(Cheat ...