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中仍然无法使用,只可以在代码中使用 百度说是我编译的版本不对 扔到 开始做自己的 这个用到了 ...
随机推荐
- Visual Studio Team Services使用教程--默认团队权限说明
- Cloudera impala简单介绍及安装具体解释
一.Impala简单介绍 Cloudera Impala对你存储在Apache Hadoop在HDFS,HBase的数据提供直接查询互动的SQL.除了像Hive使用同样的统一存储平台,Impala也使 ...
- Android Studio简单设置(转)
Android Studio 简单设置 界面设置 默认的 Android Studio 为灰色界面,可以选择使用炫酷的黑色界面.Settings --> Appearance --> Th ...
- registerForRemoteNotificationTypes: is not supported in iOS 8.0 and
注册模式: if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) { [[UIApplication sharedA ...
- 数据存储(两)--SAX发动机XML记忆(附Demo)
Android SDK支撑SAX读取技术XML,SAX通过连续的读取方式来处理XML文件.这要求每个读数XML对应的事件触发,以处理该节点的文件的节点.以下是基于一个例子来告诉SAX使用: publi ...
- win8 iis7/iis8 安装、卸载、设置方法
原文:win8 iis7/iis8 安装.卸载.设置方法 一.安装 自从升级到Win8之后,之前使用已经趋于熟悉的iis7.0被取而代之的是iis8.0,那么安装和获取方法也就产生的略微的变化,为了避 ...
- 每天一个JavaScript实例-canvas绘图
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- Caused by: java.lang.ClassNotFoundException: javax.transaction.TransactionManager
1.错误叙述性说明 usage: java org.apache.catalina.startup.Catalina [ -config {pathname} ] [ -nonaming ] { -h ...
- windows平台搭建lighttpd+php+sqlite
(一)php 1. 下载及安装 http://www.appservnetwork.com/ 从上面的网址下载appserv-win32-2.5.10并安装,在安装的时候,仅仅选择安装php. 由于, ...
- 第三十讲:Android之Animation(五)
天行健,君子以自强不息.--<周易·乾·象> 本讲内容:逐帧动画 Frame Animation 逐帧动画 Frame Animation就是说一帧一帧的连起来播放就变成了动画,和放电影的 ...