Можно ли использовать winusb для одновременной связи с несколькими одинаковыми USB-устройствами? - PullRequest
0 голосов
/ 02 ноября 2018

Я использую несколько идентичных устройств, и я хотел бы иметь возможность читать с них одновременно. Таким образом, ID продукта и поставщика одинаковы для всех устройств. Мне интересно, смогу ли я читать с них параллельно.

По-моему, я думаю, что это должно быть возможно, потому что для определенного пути к устройству вы создаете уникальный дескриптор winusb, а также уникальный дескриптор createfile.

Однако на практике я понял, что это не работает. Я не использовал перекрывающуюся структуру, поскольку я был полностью отделен из-за уникальных дескрипторов createfile. Данные, считываемые с устройств, не читаются параллельно, вместо этого они просто читают первое устройство, второе, третье и т. Д. *

Я написал код на c ++ и хотел бы получить совет, спасибо.
Будет ли использование перекрытой структуры решить проблему? Или winusb не предназначен для такого использования?

Вот ссылка на мой код, https://drive.google.com/drive/folders/1qvcGwNLxzJ0oRrFZbtyZ7g0zCU0XUG1n?usp=sharing

1 Ответ

0 голосов
/ 02 ноября 2018

Да, вы можете использовать WinUSB для одновременной связи с двумя различными USB-устройствами, независимо от того, идентичны они или нет. Вы бы назвали CreateFile дважды с двумя разными путями. Чтобы фактически получить параллелизм, вам нужно либо использовать перекрывающийся ввод-вывод, либо использовать несколько потоков.

Смысл перекрывающегося ввода-вывода состоит в том, что вы можете очень быстро запускать несколько запросов из одного потока, и операционная система будет работать с ними параллельно, а затем вы сможете запросить, чтобы убедиться, что они были выполнены.

...