usb - 如何发送超过 64 字节的 HID 数据包?
问题描述
在研究当前项目的 HID 规范时,我偶然发现了以下短语:
使用 USB 术语,设备可以在每个 USB 帧(1 毫秒)发送或接收事务。一个事务可能由多个数据包(令牌、数据、握手)组成,但低速设备的大小限制为 8 个字节,高速设备的大小限制为 64 个字节。
这让我相信 HID 数据包的最大大小是 64 字节。
但是,在检查其他一些设备的报告描述符时,我发现正在使用超过 500 个字节的数据包。这怎么可能?这些设备是否违反了 USB 规范?如果是这样,这对跨不同平台的兼容性意味着什么?
解决方案
据我所知,最后一个 HID 规范比最近的 USB 规范要早得多。IIRC 的最新版本是 1.11,可以追溯到 2001 年。
现在有low-speed
、full-speed
和high-speed
USB,我认为 HID 规范从未改变以反映这一点。
控制传输的最大数据包大小为high-speed
64 字节,中断传输和同步传输为 1024 字节,批量传输为 512 字节。请参阅NutShell 中的 USB,我认为它是最新的。当然,还有其他来源。
我不完全确定这些天这一切是否也适用于 HID 设备,因为 HID 规范没有改变,但我假设现在存在使用更大数据包的高速 HID 设备,如较新的 USB 规范中所述。
推荐阅读
- javascript - Adsense - 自定义后备
- ios-universal-links - 应用搜索 API 验证工具显示“example.com 正在返回 469。请检查您的网址并重试。”
- sql - 弹性搜索过滤器组合
- echo - Singularity exec - 回显重定向问题
- java - 如何拒绝 DML 和 DDL 查询?
- oauth - 报名后登记表
- python - 使用 python 脚本发送带有嵌入图像的 html 电子邮件
- javascript - 移动设备上的 BXSlider 4 全屏:如何保持原生垂直页面滚动(上、下)但保持水平触摸功能(左、右)?
- matlab - MATLAB中的双重求和表达式
- c# - 当文件中的值显然是英文文本时,为什么将文件中的字节编组到结构中会产生亚洲字符?