gpt4 book ai didi

c - 如何防止在 USB 传输中丢失数据?

转载 作者:太空宇宙 更新时间:2023-11-04 04:10:38 25 4
gpt4 key购买 nike

我正在编写一个程序,通过 libusb 直接与 USB 外围设备交互。有问题的设备(除其他外)有一个按钮,上面有一个 LED。我通过异步中断传输读取按钮的状态,然后一旦检测到按下,我将按钮的 LED 设置为亮起,直到我检测到按钮已被释放。每次收到更多数据时,我都会进行新的异步中断传输以从设备读取数据,因此我可以循环读取设备中的多个事件。

问题在于,除非在生成数据时在设备上有待处理的读取操作,否则我无法从设备获取数据。也就是说,如果在按下或释放按钮时我没有主动等待读取,那么该数据就会丢失。因为在接收数据和发出另一个异步中断读取请求之间有一个窗口,所以有时数据会丢失,例如我将收到“按下按钮”事件,但不会收到“释放按钮”事件,并且即使在我停止按下按钮后 LED 仍保持点亮状态。

是否有其他方式与设备交互(循环中的中断传输除外)可以保证没有数据丢失,即使在设备生成数据时我没有挂起的读取操作?或者,有没有办法确保没有我不从设备读取数据的窗口,并防止数据丢失?

最佳答案

我通过一次简单地安排多个中断传输来解决这个问题,所以当一个返回时,仍然会有另一个等待数据。我担心如果第二个在第一个安排另一个中断传输之前返回会发生什么,但实际上,这似乎不会发生在这个设备上。

关于c - 如何防止在 USB 传输中丢失数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58036108/

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