Промывка / очистка данных на направляющей трубе в WinUSB - PullRequest
0 голосов
/ 04 апреля 2019

Сценарий и определение проблемы: Я общаюсь с Qr Code Reader, используя драйверы WinUSB. Считыватель кодов Qr работает в непрерывном режиме, то есть он непрерывно считывает коды Qr каждые 10 миллисекунд и отправляет декодированный результат на мой компьютер. Затем я использую следующую команду в цикле, чтобы прочитать входящие коды 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?

...