问题的场景和定义: 我正在使用WinUSB驱动程序与Qr Code Reader进行通信。 Qr Code Reader以连续模式运行,也就是说,它每10毫秒连续读取一次Qr Codes,并将解码结果发送到我的PC。然后,我在循环中使用以下命令读取传入的Qr代码
int len = _reader.Read(data, 0, data.Length);
//_reader is the inward direction USBPipe object
问题是,在我开始读取操作之前,Qr Code Reader已经运行并正在发送消息,这意味着在我开始读取操作之前已经有很多消息排队,并且接收到这些排队的值通过我的应用程序,即使我想接收实时值。
要求:我希望能够在运行读取命令之前刷新排队的值。
我已经尝试过的事情:我已经尝试过使用_reader.Flush and _reader.Abort
命令。我还尝试过更改管道的策略以允许 Auto_Clear_Stall 和 Auto_Flush (此处解释了属性:https://docs.microsoft.com/en-us/windows-hardware/drivers/usbcon/winusb-functions-for-pipe-policy-modification)。虽然,我可能并未使用所有必需的策略来实现这一目标,但极有可能这就是我要出问题的地方。
是否有一种方法可以使用WinUSB库轻松清除管道中排队的消息?