Förslag på USB bibliotek för C++

Permalänk

Förslag på USB bibliotek för C++

Jag behöver ett förslag på ett USB bibliotek som fungerar med C++.
Den måste vara krossplattform och tillförlitlig.

Som jag har hittat just nu är:

  • Boost Asio: C++

  • Libusb: C

Dessa verkar vara populära, men det finns nackdelar med dom.
Boost Asio är svår att använda och har mycket konstig kod. Dokumentationen för Boost Asio är inte heller den bästa.
Boost Asio använder operativsystemets definition på USB portar så som COM3 eller ttyUSB0.

Libusb är enkel att använda, men använder inte operativsystemets definition på USB portar.
Istället använder den "vendor ID", vilket kan uttryckas som 0x324. Dokumentationen är dock väldigt bra på biblioteket.
Välbeprövat bibliotek.

Frågor:

  1. Har jag missuppfattat libusb?

  2. Kan ni ge några exempel?

  3. Finns det något annat bättre bibliotek?

Permalänk
Medlem

1. Verkar stämma
2. https://github.com/libusb/libusb/tree/master/examples
3. Tror nog libusb är de-facto standard.

Permalänk
Skrivet av dlq84:

1. Verkar stämma
2. https://github.com/libusb/libusb/tree/master/examples
3. Tror nog libusb är de-facto standard.

Så libusb kan lösa mitt problem?
Alltså, identifiera portar, ansluta, skriva, läsa?

Permalänk
Hedersmedlem
Skrivet av heretic16:

Så libusb kan lösa mitt problem?
Alltså, identifiera portar, ansluta, skriva, läsa?

Om det bara är serieportar du vill hantera finns det säkert enklare bibliotek. libusb ligger på lägre nivå och hanterar även andra typer av enheter (de där siffrorna identifierar tillverkare och produkt).

Permalänk
Medlem

Du får förklara djupare vad du vill göra, det verkar tyvärr som du har blandat ihop några grundläggande koncept.

Permalänk
Datavetare
Skrivet av heretic16:

Frågor:

  1. Har jag missuppfattat libusb?

  2. Kan ni ge några exempel?

  3. Finns det något annat bättre bibliotek?

libusb är i praktiken ett bibliotek som gör det möjligt att skriva drivrutiner för USB-enheter (i.e. för en specifik VENDOR_ID/PRODUCT_ID tuple) som ett user-land bibliotek.

boost::asio är ett bibliotek som t.ex. kan prata med serial-enheter där det redan finns en fungerande driver i kernel-space. Boost är vettigt om du vill läsa/skriva asynkront.

Vill du läsa synkront är det väl bara att använda vanliga IO-operation som finns i både standardbiblioteket hos C och hos C++?

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer