当前位置: 首页 > article >正文

Python pyusb 使用指南【windows+linux】

前言:USB(通用串行总线)作为一种高度通用性的硬件接口,在诸多领域均有应用。在C中可以直接使用libusb库即可完成USB设备信息查询、USB设备监听、与USB设备控制端点、数据(同步、批量、中断)端点进行指令、数据交互等功能。python中提供了对libusb的封装,但需要进行配置。

1. pyusb安装

pip insall pyusb

安装完成后直接使用一般会报“没有可用后端“的错误,需要安装后端到系统或者放到项目中并在调用时声明。

2. 安装后端

Windows:

可以在这里下载后端,下载.7z压缩文件,解压后将内部的MS64/dll/libusb-1.0.dll拷贝到C:/windows/System32/。

Linux:

通过apt/yum等包管理器直接安装

apt install libusb-1.0-0-dev
自定义

不安装,在项目中直接使用,只需要将库放到相对路径下,之后显式传入就可以了,下面以windows为例:

import usb
from usb.backend import libusb1
backend = libusb1.get_backend(find_library=lambda x: "./lib/libusb-1.0.dll")
device = usb.core.find(backend=backend,find_all=True)

3. 使用

设备匹配

测试设备为ESP32-S2,idVendor=0x303a,idProduct=0x0002

import usb
from usb.backend import libusb1
backend = libusb1.get_backend(find_library=lambda x: "./lib/libusb-1.0.dll")
device = usb.core.find(backend=backend,idVendor=0x303a,idProduct=0x0002)
print(device)

输出

DEVICE ID 303a:0002 on Bus 002 Address 010 =================
 bLength                :   0x12 (18 bytes)
 bDescriptorType        :    0x1 Device
 bcdUSB                 :  0x200 USB 2.0
 bDeviceClass           :   0xef Miscellaneous
 bDeviceSubClass        :    0x2
 bDeviceProtocol        :    0x1
 bMaxPacketSize0        :   0x40 (64 bytes)
 ......

http://www.kler.cn/news/325383.html

相关文章:

  • 基于单片机的无线宠物自动喂食系统设计
  • 大数据复习知识点3
  • Python线程终止:如何优雅地结束一场“舞蹈”
  • Mybatis缓存机制(图文并茂!)
  • YOLOv8改进 | 融合篇,YOLOv8主干网络替换为MobileNetV4+CA注意机制+Powerful-IoU损失函数(全网独家首发,实现极限涨点)
  • 力扣刷题之1014.最佳观光组合
  • RK3588主板PCB设计学习(五)
  • CRC循环校验的功能
  • 串行化执行、并行化执行
  • 算法记录——树
  • 学生宿舍管理:Spring Boot技术驱动
  • React 中的无限滚动加载数据实现
  • 探索 JUnit 5:下一代 Java 测试框架
  • Android PopupWindow.showAsDropDown报错:BadTokenException: Unable to add window
  • 【设计模式-访问者模式】
  • vue项目报错: At least one is required in a single file component.的主要原因及解决办法
  • MySQL 左右连接
  • Python 统计学
  • 推荐5款ai论文写作常用软件分享!轻松一键生成
  • MongoDB的使用
  • 组合逻辑元件与时序逻辑元件
  • QT开发:深入详解 Qt 核心类:QMap的基本概念和使用方法
  • Android RecyclerView 实现 GridView ,并实现点击效果及方向位置的显示
  • 【测试】——JUnit
  • 全网最全软件测试面试题(含答案解析+文档)
  • Unity 新NavMesh演示(1)
  • 如何在 Ubuntu 22.04 上使用 Browserless?
  • CAD快捷键
  • CMMI认证的好处
  • 在Vue.js中,你可以使用Element UI的el-input组件结合计算属性来实现模糊查询