Я использую несколько идентичных устройств, и я хотел бы иметь возможность читать с них одновременно. Таким образом, ID продукта и поставщика одинаковы для всех устройств. Мне интересно, смогу ли я читать с них параллельно.
На мой взгляд, я думаю, что это должно быть возможно, потому что для конкретного пути устройства вы создаете уникальный дескриптор winusb, а также уникальный дескриптор createfile.
Однако на практике я понял, что это не сработало. Я не использовал перекрывающуюся структуру, поскольку я был полностью отделен из-за уникальных дескрипторов createfile. Данные, считанные с устройств, не читаются параллельно, вместо этого они просто читают первое устройство, второе, третье и т. Д.
Я написал код на C ++, и я хотел бы получить несколько советов, спасибо.
Будет ли использование перекрытой структуры решить проблему?
Или winusb не предназначен для такого использования?
Вот ссылка на мой код,
https://drive.google.com/drive/folders/1qvcGwNLxzJ0oRrFZbtyZ7g0zCU0XUG1n?usp=sharing
Да, вы можете использовать WinUSB для одновременной связи с двумя различными USB-устройствами, независимо от того, идентичны они или нет. Вы бы позвонили CreateFile
дважды с двумя разными путями. Чтобы на самом деле получить параллелизм, вам нужно либо использовать перекрывающийся ввод-вывод, либо использовать несколько потоков.
Суть перекрывающегося ввода-вывода заключается в том, что вы можете очень быстро запустить несколько запросов из одного потока, и операционная система будет работать с ними параллельно, а затем вы сможете запросить, чтобы убедиться, что они были выполнены.
Других решений пока нет …