linux下使用libusb获取系统usb设备具体信息

Linux libusb USB开发(四)—— libusb例程,Linux环境下实现PC与USB设备的交互通信 (用的QT C++) 一、具体流程 用libusb函数库来完成电脑与USB设备的数据交互功能,主要有以下步骤: 1)初始化libusb函数库; 2)根据vid和pid查找某一具体设备,并获取设备描述符;(vid和pid为设备的id,且每台设备的都vid和pid是唯一的) 3)根据设备描述符打开相应设备,获取设备操作符; 4)用设备操作符配置usb设备的配置模式和接口; 5)调用相应传输函数向usb设备发送数... 阅读详情
AI摘要

本文介绍了libusb库的应用,包括初始化、获取USB设备信息、重置USB设备等操作,并提供了具体的代码示例。


一、libusb简介

libusb库提供的api接口供应用层调用,可以对系统中的usb设备操作,如reset一个usb设备,或者获取其具体信息,如configuration、interface及settings等。libusb遵循posix协议,可以跨平台使用,Linux下默认预装libusb1.0版本,开发者可以直接使用,只是在编译时需要链接lib库。

二、libusb的api介绍

1. libusb_init和libusb_exit及struct libusb_context

代码中调用libusb接口函数需要先建立上下文环境,其中结构体struct libusb_context代表一段libusb的会话,官方文档中有对这个结构的说明[libusb]。libusb_init()表示开启会话,libusb_exit()表示结束会话。通俗的理解就是struct libusb_context* ctx中的ctx代表一把钥匙,libusb_init(&ctx)表示开启,libusb_exit(null)表示锁上。

2. libusb中几个重要的数据结构体和接口函数

libusb_device **list;这个结构体用来列举当前系统中的usb设备。

libusb_device_handle *  handle;这个结构体是用来处理具体list中的usb设备的。

上面两个结构体的使用方式:

ssize_t num_devs = libusb_get_device_list(ctx, &list);根据ctx获取系统中的usb设备,返回设备个数,list指向链表头。

libusb_device *dev = list[i];
        libusb_open(dev,&handle);

获取第i个设备并使用handle进行处理。

struct libusb_device_descri

USB系列-LibUSB使用指南(1)-Windows下的报错与踩坑 Windows下的LibUSB开发的大怨种踩坑日记 阅读详情

相关推荐

[C++][libusb] 如何使用libusb打开多个VID和PID相同的设备

操作步骤基本可以按以下流程来进行1 初始化 libusb 库并创建 libusb_context2 获取连接的USB设备列表3 遍历设备列表查找指定VID和PID的设备3.1 获取设备描述符3.2 检查VID和PID3.2.1 打开设备获取设备句柄3.2.2 关闭设备句柄4 释放设备列表5 关闭libusb库并释放libusb_context。

qq_37380933的博客 1980

虚拟机Linux访问usb设备,通过Libusb库方法实现读写usb设备所获取的实时图像数据

一、前言基于Linux 平台USB驱动开发,主要有内核驱动的开发和libusb的无驱设计;首先为什么要选第三方库Libusb,可能是基于Libusb的程序只涉及到应用层,使用起来更加方便;如果是在内核驱动,就要考虑到内核大小、内核版本的兼容,如果客户需要把你的USB模块加入他们的平台,那岂不是还要重新根据客户要求裁剪、编写内核?又假如有许多客气,而且每个客气的平台不一样,那是不是需要为每个客户定制一

psy6653的博客 1万+

玩转USB HID系列:Linux下使用C语言和libusb开发USB HID

玩转USB HID系列:Linux下使用C语言和libusb开发USB HID实验环境开发步骤安装libusb试试好用否我们来与HID设备通讯!探索、学习与注意:1.&ctx是个什么鬼2.print_devs(devs)->print_devs(&devs);3.操作端口这类程序加上sudo !4.libusb_interrupt_transfer这个函数是write和rea...

whstudio123的博客 1万+

如何在Linux下利用Libusb与HID USB设备通信!

由于公司的产品,导致我在Linux下写usb通信的代码出现了许多的问题,最后发现这些设备只能通过控制传输来操作设备,所以后面的问题就迎刃而解了。现在贴上当时在QT下写的代码,以防日后再碰到此类问题的时候翻查。 libusb_device **devs; libusb_device_handle *dev_handle; libusb_context *ctx=NULL;

a7082633的博客 1万+

Linux中使用libusb读取USB设备描述符实战案例

通过实际案例演示如何在Linux下使用libusb库获取USB设备描述符,掌握libusb的初始化、设备遍历与描述符读取流程,适用于嵌入式开发和设备调试场景。

weixin_31659095的博客 1077

Linux应用编程(五)USB应用开发-libusb库

USB接口(UniversalSerialBus)是一种通用串行总线,广泛使用的接口标准,主要用于连接计算机与外围设备(如键盘、鼠标、打印机、存储设备等)之间的数据传输和电力供应。它旨在简化计算机与外部设备之间的连接方式,同时提供更高的传输速度和更好的兼容性。这些接口虽然在当时各自具有一定的专用性和高效性,但也存在很多问题,随着技术的发展,通用性更强的接口逐渐成为主流,USB(UniversalSerialBus)便是这一发展潮流的代表。USB的诞生标志着计算机外围设备连接方式的革命性转变。

qq_1033275663的博客 2651

Linux下libusb与hidusb的USB HID设备开发指南

hidusb库是基于libusb库,专门用于与人机接口设备(HID)类USB设备交互的库。HID设备包括键盘、鼠标、游戏控制器等,hidusb库为这些设备提供了更高级别的抽象和控制能力。libusb 是一个跨平台的 USB 库,支持在 Linux、macOS、Windows、Android 和其他操作系统上与 USB 设备进行通信。从最初发布以来,libusb 已经发展成为一个广泛使用的库,尤其在需要硬件抽象层来与 USB 设备交互的应用程序中。

weixin_36431145的博客 1637

DataGridView 右键菜单复制(公共)

dataGridView1.CellMouseClick += new DataGridViewCellMouseEventHandler( (sender1, e1) => { if (e1.Button == MouseButtons.Right) {

沁心渃水 2829

Diffusion Model原理详解

Diffusion Model(扩散模型 )对标的是生成对抗网络(GAN),本文将用通俗的语言和公式为大家介绍Diffusion Model,并且结合公式为大家梳理Diffusion Model的代码。

weixin_42620109的博客 6098

SystemVerilog学习总结

因为选择的offer是IC验证,以前学的是设计,所以只能再学systemverilog(SV)和UVM了。在学习SV和UVM之前,我认为需要学习以下几个部分:数字电路、c++和verilog。因为IC验证确实有不少别的专业之前没学过数字电路和Verilog,所以还是最好先学习一下。 知识点的总结主要是通过systemverilog验证-测试平台编写指南这本书进行的,所以请看书。通过对这本书的目录进行重点的划分,然后再进行相关知识点的总结。最后,给出自己收集的别的博主IC EDA环境的虚拟机,以及使用虚拟机需

博主毕竟还是人,肯定会有错误,各位看的时候发现错误提出来就好 1万+

计算机模拟爆破过程,基于LSDYNA岩石爆破模拟建模分析

原标题:基于LSDYNA岩石爆破模拟建模分析 Ls Dyna岩石爆破模拟仿真作者:dyna_focus擅长领域:dyna/abaqus/hypermesh一、 数值模型的建立1.1 单元及算法的选择岩石,炸药,空气都采用solid164实体单元。岩石采用常应力实体单元,该种单元属于纯粹的lagrange算法,该种算法单元网格附着在材料上,随着材料的流动而产生单元网格的变形,但是在结构变形巨大时,有...

weixin_29494379的博客 7311

利用PLECS实现Boost变换器的闭环控制仿真与优化

本文详细介绍了如何利用PLECS仿真软件实现Boost变换器的闭环控制与优化。从基础原理到开环系统搭建,再到闭环控制设计与动态优化,提供了完整的仿真实践指南。通过PLECS的仿真功能,工程师可以有效诊断问题、优化参数,并实现高性能的DC-DC变换器设计。

weixin_42527401的博客 325

2024最新版Anaconda Navigator安装使用指南

本文简要介绍如何下载安装Anaconda Navigator最新版,以及如何使用Python内核搭载来完成应用程序开发。

jackson_lingua的博客 1万+

【华为OD机试真题 2025C卷新题】855、识文断句 | 机试真题+思路参考+代码分析(C++、Java、Py、C语言、JS)

【华为OD机试真题 2025C卷新题】855、识文断句 | 机试真题+思路参考+代码分析(C++、Java、Py、C语言、JS) 华为od机试,华为od机试真题,华为od机试E卷,华为odE卷,华为od机试真题E卷,华为OD,华为OD机试,华为OD机试真题,华为od机考,华为od机试D卷,华为od机试真题D卷,华为od手撕代码,华为od,华为od机试C卷,华为od e卷,华为2025e卷,od机试,2025E卷,华为OD机试E卷,什么是华为od,华为od介绍,全面了解华为od,2025华为od,如何备战华为

KJ.JK 1850

ABAP Bits and Bytes 完全参考,理解内存、字节、位运算与类型解释

ABAP开发中业务代码与底层字节处理的差异:业务层关注采购订单、会计凭证等语义信息,而接口开发需处理十六进制、位运算等底层操作。文章通过整数变量示例说明同一段字节在不同类型解释下会呈现不同值,并介绍x类型、位运算及类型转换的实际应用。这些知识在文件接口、加密传输等场景中尤为重要,开发者需注意字节序、编码等问题。建议将底层协议处理与业务逻辑分离,以保持代码清晰和可维护性。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 141

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

上一篇: PyCharm下载第三方库的简便方式
下一篇: 博客转移
木兰宿莽
博客等级 码龄10年 8粉丝 38原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值