这两个术语都用于事务完成机制。数据包的最大大小可以从存储在端点描述符中的bMaxPacketSize导出。当数据包小于该值时,称为短包。同样,当您可以发送长度为零的数据包时。
现在的问题是“为什么”。让我们讨论一下。
短包的原因 -
1 - 根据 USB 规范,当主机或设备接收到数据包长度小于最大数据包大小的数据包时,应认为传输已完成,不再有数据包要接收。
2 - 批量传输(大容量存储设备)始终如此。您并不总是询问长度为 MaxPacketSize 倍数的数据。所以最后一个数据包总是小于最大数据包大小。假设您想要来自最大数据包大小为 1024 字节的批量端点的 1025 字节数据。
第一个数据包 = 1024 字节秒数据包 = 1 个字节(短数据包)。
这样主机就会知道数据传输已经完成。
零长度数据包的原因 -
1 - 与短数据包一样,零长度数据包也用于交易完成。假设您要发送 2048 字节的批量数据。
第一个数据包 = 1024 字节 第二个数据包 = 1024 字节。
现在的问题是,两者都等于最大数据包大小。设备将无法理解传输已完成。然后你发送一个零长度的数据包。
第三个数据包 = 0 字节
这将使传输完成,然后设备可以开始处理数据。
2 - 零长度数据包也用于状态阶段的控制传输,以通知成功完成。
| 归档时间: |
|
| 查看次数: |
3757 次 |
| 最近记录: |