2010-10-12 12 views
10

Jestem (zamierzam) pisać aplikację w Qt, która będzie działać na 3 głównych systemach operacyjnych (Windows, Linux i Mac). Jedną z funkcji tej aplikacji jest to, że potrzebuje ona USB, aby porozmawiać z niestandardowym sprzętem zewnętrznym. Czy istnieje wieloplatformowa biblioteka USB?Czy istnieje biblioteka USB z wieloma platformami C++?

+0

Czy niestandardowy sprzęt mówi HID przez USB, czy korzysta bezpośrednio z linii szeregowej? – nmichaels

+0

Prawdopodobnie łącze szeregowe. Jest to układ ATMega USB z biblioteką LUFA USB, która obsługuje oba urządzenia, ale łącze szeregowe jest prawdopodobnie najbardziej prawdopodobną opcją. – Bojangles

+0

Ahh, ale w systemie Windows można znaleźć kilkanaście bibliotek stron trzecich za $$$ ;-) –

Odpowiedz

8

Wypróbuj libusb.

Obsługiwane systemy operacyjne: Linux, FreeBSD , NetBSD, OpenBSD, Darwin, MacOS X (i Windows, w ramach projektu libusb-win32).

Ale należy pamiętać, że używa libusb0.sys sterownik trybu jądra Windows, która nie jest Certyfikat WHQL i może to być problem w 64-bitowej wersji systemu Windows 7 i Windows Server 2008 R2. Przepraszamy, wersja 1.2.0.0 z libusb0.sysis digitally signed.

+0

Dziękujemy! Tylko informacje, których potrzebowałem. – Bojangles

+0

Problem z używaniem libusb-win32 polega na tym, że jest to port libusb-0.1, który nie jest zgodny z libusb-1.0. Jednak libusb-1.0 wydaje się teraz obsługiwać system Windows natywnie. – trojanfoe

+0

Libusb stał się lepszy w ostatnich latach: teraz możesz używać go w systemie Windows do komunikowania się z urządzeniami, które mają WinusB jako swój sterownik, więc nie musisz uruchamiać żadnego kodu trybu jądra od stron trzecich, takich jak 'libusb0.sys'. –

4

Chciałbym tylko, aby zaktualizować ten post dla każdego, kto wraca do niego w dzisiejszych czasach ...

Libusb (wersja 0.1) został już przestarzała. Współczesnym standardem jest użycie libusb-1.0 lub libusbx.

Osobiście uważam, że istnieje wiele powodów, aby używać libusbx. Zostało napisane przez sfrustrowanych programistów libusb-0.1, którzy chcieli częstszego cyklu aktualizacji i lepszego systemu obsługi błędów.

Moje powody sugerując libusbx są następujące:

  • nie wymaga dostępu sudo
  • pracował o wiele lepiej dla mnie po wyjęciu z pudełka z czytania wiadomości przychodzących
  • lepsze wsparcie i częstsze odpowiedzi do błędy/problemy
  • asynchroniczny i synchroniczny wsparcie dla wysyłania/odbierania wiadomości

Zgoda, libusb-1.0 obsługuje raportowanie asynchroniczne/synchronizacyjne ... ale filozofia stojąca za libusbx jest znacznie bardziej atrakcyjna, a dokumentacja jest lepsza.

Wszystko zależy od Ciebie, jeśli Ty lub ktokolwiek chciałbyś dowiedzieć się czegoś więcej o bibliotekach, historia jest bardzo łatwa do znalezienia w Internecie. Możesz również zapoznać się z pytaniem o stos na this, aby uzyskać więcej informacji na bezpośredni temat.

+3

Od lutego 2014 r. Pozostało tylko [libusb] (http://libusb.info).Strona domowa linusbx ma następujący komentarz: libusbx był widelcem [libusb] (http://libusb.info), biblioteki zapewniającej ogólny dostęp do urządzeń USB. Od 2014.01.26 projekt ten został w całości włączony do [libusb] (http://libusb.info) i jest przerywany. Ponieważ nie będzie dalszych wydań libusbx, zachęcamy do przejścia na [libusb] (http://libusb.info). – user23573

Powiązane problemy