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中仍然无法使用,只可以在代码中使用 百度说是我编译的版本不对 扔到 开始做自己的 这个用到了 ...
随机推荐
- RH253读书笔记(10)-Appendix A Installing Software
Appendix A Installing Software Below are a few methods to locate and install required packages. You ...
- 编写爬虫程序的神器 - Groovy + Jsoup + Sublime(转)
写过很多个爬虫小程序了,之前几次主要用C# + Html Agility Pack来完成工作.由于.NET FCL只提供了"底层"的HttpWebRequest和"中层& ...
- jQuery、Ajax分页
1.效果预览 2.HTML代码 <div class="row"> <div class="col-lg-12 col-sm-12 col-xs-12 ...
- avalonjs1.5 入门教程
迷你MVVM框架 avalonjs1.5 入门教程 avalon经过几年以后,已成为国内一个举足轻重的框架.它提供了多种不同的版本,满足不同人群的需要.比如avalon.js支持IE6等老旧浏览器,让 ...
- ASP.NET MVC应用程序展示RDLC报表
原文:ASP.NET MVC应用程序展示RDLC报表 学习ASP.NET MVC这样久,在学习,练习与应用过程中,觉得很多知识与以前的ASP.NET多有区别,但是实现操作起来,细处又有许多相近的地方. ...
- JSP/Servlet线程安全
携带servlet开发时间.线程安全是非常重要的.否则会导致一些意想不到的结果. Servlet的生命周期是由Web负责集装箱,什么时候client第一个请求Servlet时间,容器负责初始化Serv ...
- 一步一步的理解C++STL迭代器
一步一步的理解C++STL迭代器 "指针"对全部C/C++的程序猿来说,一点都不陌生. 在接触到C语言中的malloc函数和C++中的new函数后.我们也知道这两个函数返回的都是一 ...
- AngularJS html5Mode与ASP.NET MVC路由共存
前言 很久之前便听说AngularJS,非常酷,最近也比较火,我也在持续关注这个技术,只是没有认真投入学习.前不久公司找我们部门做一个OA系统(想省下几万大洋的费用),第一时间便想到AngularJS ...
- robot framework环境搭建(转)
一. robot framework环境搭建: 官网:http://robotframework.org/ 序号 安装包名 安装方法 下载地址 备注 1 python exe文件,直接双击安装 htt ...
- 关闭safari浏览器button默认样式
前两天又遇到一个头疼的问题,在Chrome上调试好的样式,去到手机上打开,傻了... 这是什么鬼... 搜了一下,才知道这是appearance属性搞的鬼.. . 比方你想让一个div拥有button ...