自学内容网 自学内容网

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)
 ......

原文地址:https://blog.csdn.net/weixin_44179831/article/details/142516592

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!