首页 > 其他分享 >pyusb使用

pyusb使用

时间:2024-02-04 14:47:34浏览次数:23  
标签:usb pyusb dev packet 使用 import find backend

pyusb使用

1、安装pyusb

pip install pyusb

安装完成后运行以下代码查找所有usb设备

import usb.util

# with pure PyUSB
for dev in usb.core.find(find_all=True):
    print(dev)

注意:如果出现usb.core.NoBackendError: No backend available报错则说明需要安装libusb

2、安装libusb

pip install pyocd

查找所有usb设备

import libusb_package

# with pyocd/libusb-package
for dev in libusb_package.find(find_all=True):
    print(dev)
    print("-------"*10)

3、往usb写入数据

import usb.core
import usb.util
import os
import libusb_package
import usb.backend.libusb1

libusb1_backend = usb.backend.libusb1.get_backend(find_library=libusb_package.find_library)

dev = usb.core.find(idVendor=0x03eb, idProduct=0x2421, backend=libusb1_backend)
# print("dddd:", dev)
# was it found?
if dev is None:
    raise ValueError('Device not found')

# set the active configuration. With no arguments, the first
# configuration will be the active one
dev.set_configuration()

packet = [85, 170, 17, 1, 0, 31, 102, 153]
packet = packet + (64-len(packet))*[0]

dev.write(0x01, packet, timeout=1000)
data = dev.read(0x81, 64, timeout=1000)
print(data)

获取配置信息并配置usb然后读取数据

import usb.core
import usb.util
import os
import libusb_package
import usb.backend.libusb1

libusb1_backend = usb.backend.libusb1.get_backend(find_library=libusb_package.find_library)

dev = usb.core.find(idVendor=0x03eb, idProduct=0x2421, backend=libusb1_backend)

# was it found?
if dev is None:
    raise ValueError('Device not found')

dev.set_configuration()
cfg = dev.get_active_configuration()
intf = cfg[(0, 0)]

#  match the first OUT endpoint
epo = usb.util.find_descriptor(intf, custom_match=lambda e: usb.util.endpoint_direction(e.bEndpointAddress) == usb.util.ENDPOINT_OUT)
epi = usb.util.find_descriptor(intf, custom_match=lambda e: usb.util.endpoint_direction(e.bEndpointAddress) == usb.util.ENDPOINT_IN)

# print("eeeee11: ", epo)
# print("eeeee22: ", epi)

packet = [85, 170, 17, 1, 0, 31, 102, 153]
packet = packet + (64-len(packet))*[0]

epo.write(packet, timeout=1000)
data = epi.read(64, timeout=1000)
print(data)

注意:当遇到usb.core.USBError: [Errno 5] Input/Output Error报错时

1)检查usb打开的是否正确

2)检查写入的数据长度是否正确

3)检查写入的端点是否正确,往usb写如家要往“ENDPOINT 0x1: Interrupt OUT”中写数据,读数据要从“ENDPOINT 0x81: Interrupt IN”中读数据

标签:usb,pyusb,dev,packet,使用,import,find,backend
From: https://www.cnblogs.com/chen55555/p/18006126

相关文章

  • Android Handler使用方法
    目录: 1.前言本篇文章介绍AndroidHandler的基本使用方法,且Demo会以Java&Kotlin两种代码形式进行展示。在Android实际开发中,我们经常会遇到耗时任务,比如:网络请求API接口来获取数据、数据库CRUD操作等等,我们需要额外创建开启工作线程来处理这些耗时任务。由于A......
  • 【Docker】使用Docker部署MySQL
    ✨Docker本文介绍DockerDesktop以及docker命令行的简单使用DockerDesktop安装使用请查阅官方文档GetDocker|DockerDocumentation在Windows上安装DockersDesktop可参考【Docker】DockerDesktopforWindows(WSL2)安装-双份浓缩馥芮白-博客园(cnblogs.com)似乎......
  • nvtop —— GPU使用情况的可视化工具
    安装:sudoaptinstallnvtop......
  • 2024最新Android设备UUID/UDID使用指南
    摘要本篇博客主要介绍了Android设备的唯一标识符(UUID和UDID)的使用教程。在Android平台上获取设备ID一直是开发者面临的难题,因为缺乏稳定的API来获取设备ID。本文将介绍几种获取设备ID的方法,并分析它们的优缺点。引言UDID和UUID是Android设备的唯一标识符,用于标识不同设备或不同......
  • 如何使用Truffle在VSCode中调试solidity合约
    简介Truffle是以太坊最流行的开发框架,能够在本地编译、部署智能合约,使命是让开发更容易。本文以fibonacci作为实例进行调试参考文档https://trufflesuite.com/docs/truffle/how-to/debug-test/use-the-truffle-debugger/https://trufflesuite.com/guides/debugger-variable-i......
  • Git必知必会基础(18):PyCharm中使用Git
    目前主流ide是pycharm、idea等,他们可以集成git,下面分享下基本用法。数据准备远程仓库 演示:在PyCharm中使用Git(IDEA中类似)版本 配置GitSettings——>VersionControl——>Git——>指定git命令的执行路径——>点击Test 检出项目(gitclone)VCS——>GetfromVersionControl... 版......
  • Windows 下 LaTex 超简单地安装使用(MikTeX + VSCode)
    写这篇是因为我找了一晚上教程,结果发现基本上都过时了,现在的版本下根本不需要任何复杂的操作,干脆自己写一个免得后来人再崩溃。参考及主要内容来源,可以说我后半部分内容基本就是翻译(?安装LaTex主流的分发版本应该就是TeXLive和MikTeX了,这里使用MikTex——TeXLive太大了......
  • Shell条件判断:使用[]还是[[]]
    https://mp.weixin.qq.com/s/Gzv2o90dwUlBIDFcnSWpIA在编写Bash脚本时,逻辑表达式通常放在方括号[]中,但实际上,还有另一种方括号[[]]可供选择。这两种方括号在用法和功能上存在一些差异。本文将重点介绍[[]]的优势,并揭示如何判断当前环境是否支持Bash。一、[]与[[]]的区别标准......
  • 使用VNC在Windows上远程访问Ubuntu服务器
    Step0:事前准备一台安装了ghome桌面的Ubuntu服务器(用作server)一台Windows机器(用作client)Step1:Linux服务器在Ubuntu上安装一个VNC服务器,有多个选择,此处选用tigervnc,使用apt命令即可直接安装发行版。aptinstalltigervnc安装完成后可以尝试做以下设置:vncpasswdvncserver......
  • 逆向工程的使用
    1、配置generatorConfig.xml文件<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEgeneratorConfigurationPUBLIC"-//mybatis.org//DTDMyBatisGeneratorConfiguration1.0//EN""http://mybatis.org/dtd/mybat......