Windows pyusb的使用

Download Data Center Software from Total Phase.

1 SEP5010 DriverStudio
NuMega DriverStudio, acquired by Compuware.

2 USB驱动安装工具Zadig
Akeo Consulting is a small Software Development company, established in the North-West of Ireland, in the breathtaking wilderness of County Donegal.
Zadig - USB driver installation made easy, based on Windows Driver Installer library (libwdi).
https://zadig.akeo.ie/

3 libusb for Windows
3.1 注意点
测试pyusb与adb驱动通信时,需要运行adb kill-server,才可以使用pyusb;否则调用pyusb的API会返回没有权限错误。

3.2 查找是否安装过libusb
import ctypes
from ctypes import util, cdll
import os
import sys

if sys.platform == 'win32':
    libname = ctypes.util.find_library('libusb-1.0')
else:
    libname = ctypes.util.find_library('usb-1.0')
if libname is None:
    raise OSError('USB library could not be found')

print (libname)

3.3 pyusb的安装及使用
1)安装Python 3.8
安装时选择安装pip工具

2)pyusb
https://github.com/pyusb/pyusb

python -m pip install pyusb
或者
cd PATH_TO\PyUSB
python setup.py install

3)libusb
https://libusb.info/

打开压缩包,选择VS2015-x64\dll\libusb-1.0.dll,复制到C:\Windows\System32,System32 for both 32bit and 64bit applications。
选择同目录下的VS2015-x64\dll\libusb-1.0.lib,复制到C:\Python38\Lib。使用命令where python查找python在Win10的安装路径。

4)showcase
import os
os.environ['PYUSB_DEBUG'] = 'debug'
import usb.util
import usb.core
import sys

def control_out(d):
    bmRequestType =
        usb.util.build_request_type(
        # 如果无数据传输,必须是CTRL_OUT,
        # 否则ctrl_transfer()不会返回
        usb.util.CTRL_OUT,
        usb.util.CTRL_TYPE_STANDARD,
        usb.util.CTRL_RECIPIENT_INTERFACE)
    #d.ctrl_transfer(bmRequestType,
        #    0x40, 0, 0, [])
    d.ctrl_transfer(bmRequestType,
        0x40, 0, 0, "test")

def bulkloop(d):
    # bytes stream
    data = b'\x01\x02'
    len = d.write(0x02, data, 1000)
    pkt = d.read(0x86, len, 1000)
    # print(type(pkt))
    hex_array = [hex(x) for x in pkt]
    print(' '.join(hex_array))

all_devs = usb.core.find(find_all=True)
for d in all_devs:
    if (d.idVendor == 0x04B4) &
        (d.idProduct == 0x1004):
        print(d)
        control_out(d)
        bulkloop(d)

4 python hidapi
1)下载hidapi whl文件
hidapi 0.7.99.post21
https://pypi.org/project/hidapi/#files

2)安装hidapi whl
pip install PATH_TO\filename.whl

升级安装:
pip install -U PATH_TO\filename.whl

5 libusb backend
C:\Windows\System32\winusb.dll
C:\Windows\System32\drivers\winusb.sys
libusb/os/windows_common.c, windows_init() will find a valid Windows backend dll.

6 Abbreviations
ARC:Argonant RISC Core
AT91SAM9260:SAM means Smart ARM-based Microcontroller
ATMEL SAMBA:ATMEL Smart ARM-based Microcontroller Boot Assistant
CC2530:TI ChipCon2530
DWC2:Design Ware Controller 2,Apple的嵌入式设备,包括iPad和iPhone都是使用的DWC2
ISP1161:Philips' Integrated host Solution Pairs 1161,“Firms introduce USB host controllers”,https://www.eetimes.com/document.asp?doc_id=1290054
Quirks:the attributes of a device that are considered to be noncompliant with expected operation
SL811HS:Cypress/ScanLogic 811 Host/Slave,性能上与ISP1161(Integrated host Solution Pairs 1161)相当
TDI:TransDimension Inc.,该公司首先发明了将TT集成到EHCI RootHub中的方法,这样对于嵌入式系统来说,就省去了OHCI/UHCI的硬件,同时降低了成本,作为对该公司的纪念,Linux内核定义了宏ehci_is_TDI(ehci);产品UHC124表示USB Host Controller;收购了ARC USB技术;现已被chipidea收购,chipidea又被mips收购
TLV:TI Low Value,高性价比
TPS:TI Performance Solution
TT:Transaction Translator(事务转换器,将USB2.0的包转换成USB1.1的包)
USB BH reset:Bigger Hammer or Brad Hosler,表示warm reset;you may be confused why the USB 3.0 spec calls the same type of reset "warm reset" in some places and "BH reset" in other places. "BH" reset is supposed to stand for "Big Hammer" reset, but it also stands for "Brad Hosler". Brad died shortly after the USB 3.0 bus specification was started, and they decided to name the reset after him. The suggestion was made shortly before the spec was finalized, so the wording is a bit inconsistent
WHL:Python Wheel Package
Zadig:an Automated Driver Installer GUI application for WinUSB, libusb-win32 and libusbK

### 回答1: PyUSB 是一个用于在 Python 中操作 USB 设备的库,如果在 Windows 系统上总是报错,可能是由于以下原因: 1. 缺少驱动程序:请确保 USB 设备驱动程序已正确安装。 2. 权限问题:请确保当前用户具有访问 USB 设备的权限。 3. 缺少 libusb-1.0.dll:PyUSB 依赖于 libusb-1.0.dll 文件,请确保该文件已正确安装。 如果仍然无法解决问题,建议尝试卸载并重新安装 PyUSB,或者查看 PyUSB 的文档和社区资源以获取更多帮助。 ### 回答2: 如果您在Windows使用PyUSB时遇到错误,有几种方法可以尝试解决问题。 首先,确保您已正确安装了PyUSB以及相关的驱动程序。您可以通过pip或conda等包管理工具安装PyUSB。如果您已经安装了PyUSB但仍然报错,那么您可能需要安装特定于您使用的USB设备的驱动程序。您可以从设备制造商的网站下载并安装最新的驱动程序。 其次,检查USB设备和电脑之间的连接。请确保USB设备已正确连接到电脑的USB端口,并确保USB设备在其他电脑上可以正常工作。如果USB设备在其他电脑上也无法工作,那么可能是设备本身出现了问题。 另外,尝试以管理员权限运行您的Python脚本。有些USB设备需要管理员权限才能正常访问。您可以右键点击Python脚本,选择“以管理员身份运行”来尝试解决问题。 如果上述方法无效,您可以尝试使用其他USB库或方法。例如,您可以尝试使用libusb库来管理USB设备。Libusb是一个跨平台的开源库,可以用于与USB设备进行通信。 最后,如果您无法解决问题,您可以在PyUSB的GitHub页面或相关论坛上提问,寻求社区的帮助。在提问时,请提供详细的错误信息和您的操作系统、Python版本等相关信息,以便其他人帮助您解决问题。 总结来说,要解决PyUSBWindows上报错的问题,您可以尝试安装驱动程序、检查连接、使用管理员权限运行脚本、尝试其他USB库或方法,或向社区寻求帮助。 ### 回答3: 如果在Windows使用PyUSB时遇到了错误,可以尝试以下方法来解决问题: 1. 安装依赖:确保已安装必要的驱动程序和依赖库。通常,PyUSB需要使用libusb驱动程序来与USB设备进行通信。确保已将libusb安装到系统中,并根据操作系统的要求正确配置驱动程序。安装完驱动后,可以尝试重新运行代码。 2. 更新PyUSB版本:时不时地检查并更新PyUSB版本,以便获得更好的兼容性和稳定性。在PyUSB的官方网站上可以找到最新的版本,并且可以通过pip或其他包管理工具进行安装。 3. 检查USB设备:确认USB设备是否正常工作。尝试连接其他的USB设备,如果它们可以正常工作,则可能是特定设备的问题。有时候需要安装特定的USB驱动程序来与某些设备进行通信。 4. 检查USB权限:在Windows系统中,某些USB设备可能需要管理员权限才能正常工作。尝试以管理员身份运行Python脚本或应用程序,并查看是否仍然报错。 5. 检查代码和调试:仔细检查代码以查找可能的错误或问题。确保正确地初始化和配置USB连接,并按照PyUSB的文档来使用其函数和方法。对于复杂的问题,可以使用调试工具和打印语句来跟踪程序执行过程,并找出导致错误的具体原因。 6. 搜索错误信息:如果仍然无法解决问题,可以在互联网上搜索报错信息,看看是否有其他人遇到了类似的问题,并找到了解决办法。通常,PyUSBWindows上的错误信息并不是唯一的,其他人可能已经遇到并解决了相同的问题。 总的来说,解决PyUSBWindows上报错的问题需要耐心和细心。通过逐步排查和尝试不同的解决方法,最终应该能够找到问题所在并修复它。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值