跳转到主要内容

获取USB描述符的帮助工具

项目描述

简介

Documentation Status Discord Build Status Code Style: Black

获取USB描述符的帮助工具

依赖关系

此驱动依赖于

请确保所有依赖项在CircuitPython文件系统中可用。这可以通过下载Adafruit库和驱动程序捆绑包轻松实现,或者可以使用circup安装单个库。

从PyPI安装

在支持的GNU/Linux系统(如Raspberry Pi)上,您可以从PyPI本地安装驱动程序。要安装当前用户

pip3 install adafruit-circuitpython-usb-host-descriptors

要全局安装(在某些情况下可能需要)

sudo pip3 install adafruit-circuitpython-usb-host-descriptors

在当前项目中的虚拟环境中安装

mkdir project-name && cd project-name
python3 -m venv .venv
source .env/bin/activate
pip3 install adafruit-circuitpython-usb-host-descriptors

使用Circup在连接的CircuitPython设备上安装

请确保您已经将circup安装到Python环境中。如有必要,使用以下命令进行安装

pip3 install circup

安装circup后,并连接了CircuitPython设备,使用以下命令进行安装

circup install adafruit_usb_host_descriptors

或以下命令更新现有版本

circup update

使用示例

打印有关设备及其第一个(通常也是唯一)配置的基本信息。

# SPDX-FileCopyrightText: 2017 Scott Shawcroft, written for Adafruit Industries
# SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries
#
# SPDX-License-Identifier: Unlicense

import time
import usb.core

import adafruit_usb_host_descriptors

DIR_IN = 0x80

while True:
    print("searching for devices")
    for device in usb.core.find(find_all=True):
        print("pid", hex(device.idProduct))
        print("vid", hex(device.idVendor))
        print("man", device.manufacturer)
        print("product", device.product)
        print("serial", device.serial_number)
        print("config[0]:")
        config_descriptor = adafruit_usb_host_descriptors.get_configuration_descriptor(
            device, 0
        )

        i = 0
        while i < len(config_descriptor):
            descriptor_len = config_descriptor[i]
            descriptor_type = config_descriptor[i + 1]
            if descriptor_type == adafruit_usb_host_descriptors.DESC_CONFIGURATION:
                config_value = config_descriptor[i + 5]
                print(f" value {config_value:d}")
            elif descriptor_type == adafruit_usb_host_descriptors.DESC_INTERFACE:
                interface_number = config_descriptor[i + 2]
                interface_class = config_descriptor[i + 5]
                interface_subclass = config_descriptor[i + 6]
                print(f" interface[{interface_number:d}]")
                print(
                    f"  class {interface_class:02x} subclass {interface_subclass:02x}"
                )
            elif descriptor_type == adafruit_usb_host_descriptors.DESC_ENDPOINT:
                endpoint_address = config_descriptor[i + 2]
                if endpoint_address & DIR_IN:
                    print(f"  IN {endpoint_address:02x}")
                else:
                    print(f"  OUT {endpoint_address:02x}")
            i += descriptor_len
        print()
    time.sleep(5)

文档

此库的API文档可以在Read the Docs上找到。

有关构建库文档的信息,请参阅本指南

贡献

欢迎贡献!请在贡献之前阅读我们的行为准则,以帮助本项目保持开放。

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

adafruit-circuitpython-usb-host-descriptors-0.1.2.tar.gz (26.6 kB 查看哈希)

上传时间 源代码

构建分发

由支持