Używam wielu identycznych urządzeń i chciałbym móc z nich jednocześnie czytać. Tak więc identyfikator produktu i identyfikator dostawcy są takie same dla wszystkich urządzeń. Zastanawiam się, czy będę mógł z nich czytać równolegle.
Moim zdaniem wydaje mi się, że powinno to być możliwe, ponieważ dla określonej ścieżki urządzenia tworzysz unikalny uchwyt winusb, a także unikalny uchwyt createfile.
Jednak w praktyce zdałem sobie sprawę, że to nie działa. Nie użyłem nakładających się struktur, ponieważ były one całkowicie oddzielne ze względu na unikalne uchwyty do tworzenia plików. Dane odczytywane z urządzeń nie są odczytywane równolegle, zamiast tego odczytuje tylko pierwsze urządzenie, drugie, trzecie itd...
Napisałem kod w c++ i proszę o radę, dziękuję.
Czy użycie nakładającej się struktury rozwiąże problem? A może winusb nie ma być używany w ten sposób?
Oto link do mojego kodu, https://drive.google.com/drive/folders/1qvcGwNLxzJ0oRrg0zbCU0spX udostępnianie
1 odpowiedź
Tak, możesz używać WinUSB do równoległej komunikacji z dwoma różnymi urządzeniami USB, niezależnie od tego, czy są identyczne, czy nie. Zadzwoniłbyś CreateFile
dwa razy z dwiema różnymi ścieżkami. Aby faktycznie uzyskać równoległość, musiałbyś użyć nakładających się we/wy lub użyć wielu wątków.
Punktem nakładających się we/wy jest to, że możesz bardzo szybko uruchomić wiele żądań z jednego wątku, a system operacyjny będzie nad nimi pracował równolegle, a później możesz zapytać, czy zostały zakończone.
Podobne pytania
Nowe pytania
c++
C ++ to język programowania ogólnego przeznaczenia. Pierwotnie został zaprojektowany jako rozszerzenie C i ma podobną składnię, ale teraz jest to zupełnie inny język. Użyj tego tagu w przypadku pytań dotyczących kodu (który ma zostać) skompilowany za pomocą kompilatora C ++. Użyj znacznika specyficznego dla wersji w przypadku pytań związanych z określoną wersją standardu [C ++ 11], [C ++ 14], [C ++ 17], [C ++ 20] lub [C ++ 23] itp. .