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

-3
aapp 2 listopad 2018, 07:02

1 odpowiedź

Najlepsza 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.

0
David Grayson 2 listopad 2018, 09:43