python-libusb1 项目技术文档
2024-12-17 20:37:24作者:幸俭卉
1. 安装指南
依赖项
- CPython 3.6+ 或 pypy 2.0+:较旧版本可能也能工作,但不推荐使用,因为没有为这些版本设置自动化回归测试。
- libusb-1.0:需要安装 libusb-1.0 库。
支持的操作系统
python-libusb1 可以在以下操作系统上运行:
- GNU/Linux
- Windows(原生 DLL 或通过 Cygwin)
- OSX(通过 MacPorts、Fink 或 Homebrew)
- FreeBSD(包括 Debian GNU/kFreeBSD)
- OpenBSD
安装步骤
-
通过 PyPI 安装:
$ pip install libusb1
-
从源码安装最新版本:
$ git clone https://github.com/vpelletier/python-libusb1.git $ cd python-libusb1 $ pip install .
Windows 安装注意事项
- 通过 PyPI 安装的 wheel 包会自动安装 libusb DLL 到 usb1 模块中。
- 安装时不会安装驱动程序,因此需要根据设备选择使用 libusbk 或 WinUSB,并使用 Zadig 或其他工具安装相应的驱动。
- 从源码安装时不会安装 DLL,因此需要手动安装 libusb 库,并确保 ctypes 可以找到它。
检查发布文件签名
- 下载发布文件并记录其 URL。
- 下载其分离签名文件,方法是在发布文件 URL 后添加
.asc
。 - 将发布密钥添加到 gnupg 密钥环中(
KEYS
文件在主仓库中),并使用 gnupg 验证签名。 - 安装已下载的发布文件。
2. 项目使用说明
查找设备并获取独占访问权限
import usb1
with usb1.USBContext() as context:
handle = context.openByVendorIDAndProductID(
VENDOR_ID,
PRODUCT_ID,
skip_on_error=True,
)
if handle is None:
# 设备不存在或用户无权访问设备
with handle.claimInterface(INTERFACE):
# 在已声明的接口上执行操作
同步 I/O
while True:
data = handle.bulkRead(ENDPOINT, BUFFER_SIZE)
# 处理数据...
异步 I/O(带错误处理)
def processReceivedData(transfer):
if transfer.getStatus() != usb1.TRANSFER_COMPLETED:
# 传输未成功完成,没有数据可读
return
data = transfer.getBuffer()[:transfer.getActualLength()]
# 处理数据...
# 数据处理完成后重新提交传输
transfer.submit()
# 构建传输对象列表并提交以启动传输
transfer_list = []
for _ in range(TRANSFER_COUNT):
transfer = handle.getTransfer()
transfer.setBulk(
usb1.ENDPOINT_IN | ENDPOINT,
BUFFER_SIZE,
callback=processReceivedData,
)
transfer.submit()
transfer_list.append(transfer)
# 只要有一个传输提交,就继续循环
while any(x.isSubmitted() for x in transfer_list):
try:
context.handleEvents()
except usb1.USBErrorInterrupted:
pass
3. 项目 API 使用文档
USBContext 类
USBContext.__init__(self)
:初始化 USB 上下文。USBContext.getDeviceList(self)
:获取设备列表,返回 USBDevice 实例列表。
USBDevice 类
USBDevice.getBusNumber(self)
:获取设备的总线号。
USBError 异常
usb1.USBError
:错误状态被转换为 USBError 异常,状态值作为value
实例属性。
4. 项目安装方式
通过 PyPI 安装
$ pip install libusb1
从源码安装
$ git clone https://github.com/vpelletier/python-libusb1.git
$ cd python-libusb1
$ pip install .
Windows 安装注意事项
- 通过 PyPI 安装的 wheel 包会自动安装 libusb DLL 到 usb1 模块中。
- 从源码安装时不会安装 DLL,因此需要手动安装 libusb 库,并确保 ctypes 可以找到它。
通过以上步骤,您可以顺利安装并使用 python-libusb1 项目。
热门项目推荐
相关项目推荐
- 国产编程语言蓝皮书《国产编程语言蓝皮书》-编委会工作区017
- nuttxApache NuttX is a mature, real-time embedded operating system (RTOS).C00
- qwerty-learner为键盘工作者设计的单词记忆与英语肌肉记忆锻炼软件 / Words learning and English muscle memory training software designed for keyboard workersTSX027
- 每日精选项目🔥🔥 01.17日推荐:一个开源电子商务平台,模块化和 API 优先🔥🔥 每日推荐行业内最新、增长最快的项目,快速了解行业最新热门项目动态~~026
- Cangjie-Examples本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。Cangjie045
- 毕方Talon工具本工具是一个端到端的工具,用于项目的生成IR并自动进行缺陷检测。Python039
- PDFMathTranslatePDF scientific paper translation with preserved formats - 基于 AI 完整保留排版的 PDF 文档全文双语翻译,支持 Google/DeepL/Ollama/OpenAI 等服务,提供 CLI/GUI/DockerPython05
- mybatis-plusmybatis 增强工具包,简化 CRUD 操作。 文档 http://baomidou.com 低代码组件库 http://aizuda.comJava03
- advanced-javaAdvanced-Java是一个Java进阶教程,适合用于学习Java高级特性和编程技巧。特点:内容深入、实例丰富、适合进阶学习。JavaScript0108
- taro开放式跨端跨框架解决方案,支持使用 React/Vue/Nerv 等框架来开发微信/京东/百度/支付宝/字节跳动/ QQ 小程序/H5/React Native 等应用。 https://taro.zone/TypeScript09
热门内容推荐
最新内容推荐
项目优选
收起
Python-100-Days
Python - 100天从新手到大师
Python
268
55
国产编程语言蓝皮书
《国产编程语言蓝皮书》-编委会工作区
66
17
Cangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
196
45
MateChat
前端智能化场景解决方案UI库,轻松构建你的AI应用,我们将持续完善更新,欢迎你的使用与建议。
官网地址:https://matechat.gitcode.com
144
24
CangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
896
0
open-eBackup
open-eBackup是一款开源备份软件,采用集群高扩展架构,通过应用备份通用框架、并行备份等技术,为主流数据库、虚拟化、文件系统、大数据等应用提供E2E的数据备份、恢复等能力,帮助用户实现关键数据高效保护。
HTML
85
63
qwerty-learner
为键盘工作者设计的单词记忆与英语肌肉记忆锻炼软件 / Words learning and English muscle memory training software designed for keyboard workers
TSX
333
27
erp-pro
基于SpringBoot 2.X框架的智能制造云办公系统,立志打造ERP+生产功能的软件,专注进销存+财务功能+生产管理,适合各行业。主要完成从下单->进货->生产->出库的过程,涉及到领料,出入库,工序,采购,销售,仓库等功能,对权限进行精确划分,同时支持多系统集成方案,可与OA,CRM,知识库等多个系统进行集成使用。
Java
17
6
ShopXO
🔥🔥🔥ShopXO企业级免费开源商城系统,可视化DIY拖拽装修、包含PC、H5、多端小程序(微信+支付宝+百度+头条&抖音+QQ+快手)、APP、多仓库、多商户、多门店、IM客服、进销存,遵循MIT开源协议发布、基于ThinkPHP8框架研发
JavaScript
37
9
HarmonyOS-Examples
本仓将收集和展示仓颉鸿蒙应用示例代码,欢迎大家投稿,在仓颉鸿蒙社区展现你的妙趣设计!
Cangjie
268
69