78 Linux libusb库USB HID应用编程笔记

libusb 和 hidapi 库编译和使用 阅读详情

1 前言

        这几天搞另外一个项目,基于Ubuntu开发一个小的应用程序,就是通过USB HID与设备通信。因此需要在Linux环境编写对应USB HID通信应用。

        目前libusb库已经很好的支持USB相关应用的开发,库中提供了丰富的USB接口,用户可以直接调用其提供的API,实现快速开发。

        本文对USB HID应用开发进行了简要记录,方便日后自己查看复习。

2 libusb库准备

(1)获取libusb库源码

下面链接是libusb库的源码下载地址。

libusb库源码:https://github.com/libusb/libusb/releases

(2)编译libusb库

获取到源码之后,需要对库进行编译,下面记录了自己编译的指令。

cd libusb-1.0.26/
#配置
./configure --prefix=/home/libusbinstall --build=x86_64-linux --disable-udev
#编译
make
#安装
make install

(3)安装目录

安装之后可以看到目标目录存在两个文件夹:include/ 和 lib/

Linux驱动开发(十三)---USB驱动HID开发学习(鼠标) 学习树莓派下usb鼠标驱动开发 阅读详情

相关推荐

玩转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万+

STM32 USB HID 自定义设备 bulk 传输

STM32 USB HID 自定义设备 bulk 传输ST(意法半导体公司)为STM32系列处理器编写了外设USB的库,并提供了很好的参考例程,本文就是参考ST提供的例程,在STM32F4 discovery板子上实现usb bulk传输。Host端是在linux平台上利用libusb库函数写的读写USB应用。本次实现在STM32 USB例程中的Device HID 鼠标例程基础上添加bulk传输端

chengwenyang的专栏 3万+

【Qt】使用libusb和hidapi实现hid通信

本文实例源码下载:https://download.youkuaiyun.com/download/u010875635/10689926 使用libusb可以实现通用的usb通信,但是实现较为复杂,可以使用hidapi来封装一层,通过hidapi调用libusb。 具体流程如下: 1、编译libusb 下载地址:https://sourceforge.net/projects/libusb/fi...

beatfan的博客 1万+

避坑指南:Linux下libusb开发USB HID的6个常见问题及解决方案

本文详细解析了在Linux环境下使用libusb开发USB HID设备时常见的6个问题及解决方案,包括权限问题、版本差异、函数误解、内核驱动冲突、设备描述符检查和调试技巧。特别针对USB HID开发中的实际痛点,提供了实用的代码示例和调试方法,帮助开发者高效避坑。

weixin_29168393的博客 403

USB免驱直连技术详解:CDC、HID与libusb实现方案

USB(通用串行总线)作为现代计算机连接外设的核心标准,其通信依赖于主机与设备之间遵循特定协议的交互。其核心原理在于通过标准化的描述符定义设备类型与功能,操作系统据此加载对应驱动程序以实现通信。对于开发者而言,直接编写内核态驱动往往面临兼容性、签名和部署复杂的挑战。因此,利用操作系统内建的标准USB设备类驱动或用户态库进行直接访问,成为一种极具工程价值的技术路径。它能有效简化部署流程,提升在受限环境(如客户现场、公用电脑)下的操作便利性与安全性。具体而言,通过将设备配置为CDC ACM(通信设备类)或HID

weixin_33672109的博客 443

Linux下使用C语言和libusb开发USB HID

玩转USB系列:Linux下使用C语言和libusb开发USB HID 实验环境 开发步骤 安装libusb 试试好用否 我们来与HID设备通讯! 探索、学习与注意: 1.&ctx是个什么鬼 2.print_devs(devs)->print_devs(&devs); 3.操作端口这类程序加上sudo ! 4.libusb_interrupt_transfer这个函数是write和read一体的! 5.找不到函数报错的时候别急查网上,把头文件打开搜索一下更管用! 6.终端清屏指令 实验

技术联盟 1183

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

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

weixin_36431145的博客 1639

Linux USB HID Device 测试代码解析与应用

HID设备事件定义了设备能够报告给主机的所有信息。每个事件都与特定的用途相关联,如按键、按钮或者移动传感器的值。事件的识别是通过报告描述符实现的,报告描述符描述了设备支持的所有报告项及其属性。主机端的HID驱动程序负责解析数据包,将数据映射到报告描述符中定义的事件上。例如,如果报告描述符定义了16个按键,驱动将负责将数据包中的相应字节映射为具体的按键事件。libusb库是用于访问USB设备的一个跨平台库,它为开发者提供了一系列与USB设备通信的底层接口。

weixin_35266799的博客 1409

LIBUSB_HID通讯_上位机

LIBUSB_HID通讯_上位机,和之前上传的两个资源通讯用到

基于libUsb库实现Hid USB设备通讯

OnInitDialog()下添加如下代码: struct usb_bus *busses, *bus; // usb_dev_handle *handle = NULL; //这个需定义为全局变量,在读线程中也许使用 usb_init(); usb_find_busses(); usb_find_devices(); busses = usb_get_busses(); for(bus = busses; bus; bus = bus->next) { struct usb_device *dev;

STM32 自定义HID 设备, 通过快传输接收上位机发来的数据。上位机使用Libusb库函数实现,接口简单

STM32 自定义HID 设备, 通过快传输接收上位机发来的数据。上位机使用Libusb库函数实现,接口简单。程序中添加了上位机接收数据的接口,USB 设备端的IN 接口也做好了,用户只要将需要发送给HOST的数据添加进去就可以了.zip

BUUCTF--[OGeek2019]babyrop

才学习了基本的ROP流程,到处找题练,不过也没做出来几道题,以这道32位的题作为例题吧。 这道题是BUUCTF上pwn练习题里的[OGeek2019]babyrop。 代码审计 老规矩先checksec一下: 没有canary保护,nx保护开启排除shellcode可能性,FULL RELEO为地址随机化。 观察主函数,先设定了一个闹铃,到时间就会强制退出程序,解除闹铃的方法在上一篇博客中提到过了, 这道题中闹铃函数依然对我们解题起不到什么干扰作用。 主函数的思路大概是:生成一个随机数,把这个随机数作为

N1rvana的博客 6007

【STM32】R05D电控红外协议的美的空调遥控器

目录一、设计思路一、R05D红外协议原理1.协议手册理解2.验证时序(重点)二、硬件实现1.需要的材料2.对发射模块电路进行修改3.STM32 GPIO选择三、代码实现1.载波38kHZ实现2.R05D时序实现3.调用函数并验证 一、设计思路 通常红外遥控采用NEC传输协议,而美的空调采用的是R05D红外协议(应该是自己设计的协议),因此用一般红外编码发射模块无法直接对空调进行控制。 解决方法:获取R05D协议手册 + 用红外接收管对原有遥控器红外接收进行波形分析。 一、R05D红外协议原理 R05D电控功

weixin_42204837的博客 1万+

【Bug已解决】Auto mode cannot determine the safety of an action — Claude Code 自动模式安全判断失败解决方案

将已知安全的操作添加到白名单,分类器不再拦截这些操作。# 步骤 1:编辑 Claude Code 配置"Read","Write"EOF# 步骤 2:白名单中的操作将自动通过# 不在白名单中的操作仍需分类器判断# 步骤 3:重启 Claude Codeclaude方案适用场景推荐指数难度方案一:手动审批偶发回退,安全优先⭐⭐⭐⭐⭐低方案二:/compact 压缩上下文超限导致⭐⭐⭐⭐低方案三:拆分步骤复杂操作触发⭐⭐⭐⭐低方案四:跳过审批隔离环境,CI/CD。

博客 1万+

基于本机知识库 + 豆包(火山引擎)+ MCP的落地方案

最小 MVP:本地知识库 + Doubao Embedding + 简单检索。工具化:把检索/写入/系统功能通过 MCP 封装。Agent 编排:RAG 流程 + 自检 + 引用输出。这样你就可以快速落地一个基于豆包 + 本机知识库的 MCP Agent。

lpfasd123的博客 1096

恶劣天气下的分割鲁棒性:雨雪雾干扰消除

恶劣天气下的分割鲁棒性:雨雪雾干扰消除​ ,人工智能,计算机视觉,大模型,AI,本文围绕恶劣天气下语义分割鲁棒性及雨雪雾干扰消除展开,分析了雨雪雾对图像和分割任务的影响,介绍了基于图像增强、深度学习等现有解决方法,以及针对不同干扰的具体方案,还探讨了提高分割鲁棒性的策略、实验评估情况,指出当前面临复杂天气、数据缺乏、实时性等挑战,并展望了端到端模型、无监督学习等未来发展趋势,为该领域研究提供了全面参考。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 17万+

YOLO26全网首发:CVPR2026 MixerCSeg | DEGConv方向引导边缘门控,破解细长裂缝检测难题

DEGConv通过方向先验嵌入、边缘增强卷积和动态门控三大机制,针对性解决了YOLO在处理裂缝类细长、多方向、低对比度目标时的特征提取不足问题,显著提升了裂缝检测的精度与鲁棒性。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 1034

基于 YOLOv8 的自动驾驶车辆障碍物检测与避障路径规划

本文探讨基于YOLOv8的自动驾驶车辆障碍物检测与避障路径规划系统。在感知层面,采用YOLOv8模型实现多类别障碍物识别,结合单目视觉距离估计和ByteTrack多目标跟踪算法,完成障碍物的稳定检测与运动状态估计。在路径规划层面,设计分层规划架构,融合全局路径规划与局部避障算法,重点实现Frenet坐标系下的采样优化算法和基于模型预测控制的实时避障轨迹生成。通过完整的代码实现与仿真实验,验证系统在复杂交通场景下的有效性与实时性,为自动驾驶开发者提供从理论到实践的完整技术参考。 关键词:YOLOv8;自动驾驶

huanghm88的专栏 249

浏览器缓存导致代码不更新?一招解决部署后用户仍看到旧页面的问题

方案效果适用场景文件名哈希永久解决前端工程化项目HTTP缓存头控制精准控制需服务器权限Meta标签部分生效临时补救方案最佳实践:入口HTML禁用缓存,静态资源使用哈希文件名 + 长期缓存,达到「秒级更新」+「高性能」的平衡!

江拥羡橙的博客 810

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

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

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

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

上一篇: 77 智能卡ATR TA1通信速率计算
下一篇: 79 Openssl3.0 RSA公钥加密数据
Chasing_Chasing
博客等级 码龄10年 233粉丝 87原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值