gpt4 book ai didi

android - Android 的 String UsbDevice.getVersion() 是如何从 Word bcdDevice 编码的?

转载 作者:行者123 更新时间:2023-11-29 15:37:14 26 4
gpt4 key购买 nike

我的 USB 设备带有 bcdDevice = 262(字)。在 Android 中,根据 UsbDevice.getVersion() 显示“1.16”(字符串),因为它是 String 。通常第一个字节是设备主要版本,第二个字节是次要版本,相应应为“1”和“6”:

devInfo->version.major = (dev_desc->bcdDevice >> 8) & 0xFF;
devInfo->version.minor = dev_desc->bcdDevice & 0xFF;

Android 如何从 word bcdDevice 编码 String 设备版本?我需要做相反的事情 - 使用 Android“版本”获取“bcdDevice”值。

显然“1.16”不能用以下方式解析:““.”之前的主版本为 int,其余为次版本”,因为次版本将是 16,但实际上是 6。

更新 1在 Mac USB 设备信息上,它显示为“1.06”(正确):

$system_profiler SPUSBDataType
USB:

USB 3.0 Bus:

Host Controller Driver: AppleUSBXHCISPTLP
PCI Device ID: 0x9d2f
PCI Revision ID: 0x0021
PCI Vendor ID: 0x8086

Vendor-Specific Device:

Product ID: 0x0753
Vendor ID: 0x16d0
Version: 1.06
Speed: Up to 1.5 Mb/sec
Location ID: 0x14400000 / 19
Current Available (mA): 500
Extra Operating Current (mA): 0

最佳答案

没有高级 Android API 可以返回 USB bcdDevice 值。

UsbDevice.getVersion() 的值实际上是 bcdUSB 的值,表示它是 USB 设备规范版本。

(据我所知)有两种方法可以在 Android 上获取 bcdDevice:

  • 正如 ddATC 所指出的 -> 使用 UsbDeviceConnection.getRawDescriptors()bcdDevice 的值是字节 12 和 13。
  • 手动执行controlTransfer操作来读取设备描述符:示例代码:https://github.com/androidthings/sample-usbenum

更多 USB 规范信息:

附:我个人使用 UsbDeviceConnection.getRawDescriptors() 来读取 bcdDevice 值。

关于android - Android 的 String UsbDevice.getVersion() 是如何从 Word bcdDevice 编码的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47303802/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com