返回

安卓与 USB_HID 设备控制传输通信中的 USB 基础

Android

在安卓环境中,实现与 USB_HID 设备的控制传输通信需要深入理解 USB 协议和规范的某些方面。本文旨在阐述这些基础知识,以便开发者能够充分利用安卓提供的 API,并有效地建立与 USB_HID 设备的通信。

USB 基础:一条必经之路

USB(通用串行总线)是一种广泛用于连接计算机和外围设备的通信协议。它是一个四线制串行总线,由一个主机控制器和一个或多个设备组成。

USB 规范

USB 规范定义了 USB 协议的物理层、数据链路层、传输层和应用层。这些层中的每一个都负责特定的一组功能,例如:

  • 物理层: 定义了电气和物理接口特性,以及数据传输速率。
  • 数据链路层: 负责将数据分组并处理错误检测和纠正。
  • 传输层: 管理数据包的传输和接收。
  • 应用层: 定义了特定设备类别的通信协议。

USB 设备符

每个 USB 设备都包含其特性的描述符。这些描述符提供了有关设备类型、供应商 ID、产品 ID、配置和其他信息的重要信息。

  • 设备描述符: 提供有关设备的基本信息,例如其供应商 ID、产品 ID 和设备类。
  • 配置描述符: 描述设备支持的各种配置,包括端点和接口。
  • 接口描述符: 定义设备上的特定接口,并描述其支持的端点。
  • 端点描述符: 提供有关端点的详细信息,例如其类型、方向和最大数据包大小。

USB 控制传输:与设备交互

控制传输是 USB 协议中的一种通信类型,用于与设备交换命令和数据。它通常用于初始化设备、配置设置和获取状态信息。

控制传输过程

控制传输过程涉及以下步骤:

  1. 主机发送一个控制传输请求,其中包含设备地址、请求类型、请求代码和任何数据。
  2. 设备收到请求并发送一个控制传输响应,其中包含请求的状态和任何数据。
  3. 主机读取响应并采取适当的措施。

控制传输类型

有四种类型的控制传输:

  • 标准请求: 由 USB 规范定义的通用请求。
  • 类请求: 特定于设备类的请求。
  • 厂商请求: 特定于特定供应商的请求。
  • 保留请求: 为将来使用而保留的请求。

USB_HID 设备:用 USB 交互

USB_HID(人机接口设备)是一种 USB 设备类,用于连接诸如键盘、鼠标和游戏控制器之类的设备。HID 设备使用控制传输来交换数据和命令。

USB_HID 报告描述符

USB_HID 报告描述符定义了 HID 设备发送和接收的数据格式。它指定了设备上按钮、轴和 LED 等控件的布局和行为。

USB_HID 报告

USB_HID 报告是设备发送给主机或从主机接收的数据包。它们包含有关设备控件状态的信息,例如按钮是否按下或轴移动的方向。

结论

了解 USB 基础对于实现安卓与 USB_HID 设备之间的控制传输通信至关重要。通过理解 USB 规范、描述符、控制传输和 USB_HID 设备的特定性,开发者可以充分利用安卓提供的 API,并建立可靠有效的通信通道。