linux qt libusb,QT USB技术(一)基础

本文介绍了在Linux系统中使用QT结合libusb库进行USB设备操作的基础知识,包括libusb的初始化、设备查找、设备打开与关闭等核心函数的使用,并对比了libusb与HID驱动的设备查找和打开过程,展示了libusb的易用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 libusb 介绍libusb 设计了一系列的外部API为应用程序所调用,通过这些API应用程序可以操作硬件,从libusb的源代码可以看出,这些API 调用了内核的底层接口,和kernel

driver中所用到的函数所实现的功能差不多,只是libusb更加接近USB 规范。使得libusb的使用也比开发内核驱动相对容易的多。Libusb 的编译安装请查看Readme,这里不做详解二 libusb 的外部接口2.1 初始化设备接口这些接口也可以称为核心函数,它们主要用来初始化并寻找相关设备。usb_init函数定义: void usb_init(void);从函数名称可以看出这个函数是用来初始化相关数据的,这个函数大家只要记住必须调用就行了,而且是一开始就要调用的.

usb_find_busses函数定义: int usb_find_busses(void);寻找系统上的usb总线,任何usb设备都通过usb总线和计算机总线通信。进而和其他设备通信。此函数返回总线数。usb_find_devices函数定义: int usb_find_devices(void);寻找总线上的usb设备,这个函数必要在调用usb_find_busses()后使用。以上的三个函数都是一开始就要用到的,此函数返回设备数量。usb_get_busses函数定义: struct usb_bus *usb_get_busses(void);这个函数返回总线的列表,在高一些的版本中已经用不到了,这在下面的实例中会有讲解2.2 操作设备接口usb_open函数定义: usb_dev_handle *usb_open(struct *usb_device dev);打开要使用的设备,在对硬件进行操作前必须要调用usb_open 来打开设备,这里大家看到有两个结构体usb_dev_handle 和usb_device 是我们在开发中经常碰到的,有必要把它们的结构看一看。在libusb 中的usb.h和usbi.h中有定义。这里我们不妨理解为返回的 usb_dev_handle 指针是指向设备的句柄,而行参里输入就是需要打开的设备。usb_close 函数定义: int usb_close(usb_dev_handle *dev); 与usb_open相对应,关闭设备,是必须调用的, 返回0成功,Libusb库的使用使用libusb之前你的linux系统必须装有usb文件系统,这里还介绍了使用hiddev设备文件来访问设备,目的在于不仅可以比较出usb的易用性,还提供了一个转化成libusb驱动的案例。3.1 find设备任何驱动第一步首先是寻找到要操作的设备,我们先来看看HID驱动是怎样寻找到设备的。我们假设寻找设备的函数Device_Find(注:代码只是为了方便解说,不保证代码的健全)

int Device_Find()

{

char dir_str[100];

char hiddev[100];

DIR dir;

memset (dir_str, 0 , sizeof(dir_str));

memset (hiddev, 0 , sizeof(hiddev));

dir=opendir("/dev/usb/hid");

if(dir){

sprintf(dir_str,"/dev/usb/hid/");

closedir(dir);

}else{

sprintf(dir_str,"/dev/usb/");

}

for(i = 0; i

sprintf(hiddev, "%shiddev%d", dir_str,i);

fd = open(hiddev, O_RDWR);

if(fd > 0) {

ioctl(fd, HIDIOCGDEVINFO, &a

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值