Sziasztok,
első usb hid próbálkozásom történik. A programom a csatlakoztatott usb cuccban levő stringet keresi. Megszámolja, hány darab ilyen eszközt lát. Ha egyet - és csak egyetlenegyet - lát, akkor a keresés közben készült device másolat alapján meg is nyitja azt, majd olvas(na) róla.
A felismeréssel minden rendben van, de az olvasás mindig -16 errorral száll ki, ami ha jól sejtem, "device busy". Mit csinálok rosszul?
Itt a két rövidke file:
http://pastebin.com/ZsXMkPMR
István
- 4862 megtekintés
Hozzászólások
Szerintem a kernel HID drivere foglalja az eszközt. Azt kellene lecsatolni.
--
Soli Deo Gloria
- A hozzászóláshoz be kell jelentkezni
Azt hogyan kell?
- A hozzászóláshoz be kell jelentkezni
Én egyszer libusbx library-vel csináltam ilyet, ott van rá függvényhívás. Vagy esetleg az rmmod paranccsal.
--
Soli Deo Gloria
- A hozzászóláshoz be kell jelentkezni
Közben eszembe jutott, hogy megnézzem a kiindulási alapomat, amiből kiindultam:
http://pastebin.com/kJS6UUsM
Ez minden talált eszköz jellemzőit kiírja. A kernel hid ezt nem akadalyozza, csak az olvasást?
- A hozzászóláshoz be kell jelentkezni
Igazad volt, az rmmod segített. Az általad ajánlott hívásban
int libusb_detach_kernel_driver ( libusb_device_handle * dev,
int interface_number
)
honnan veszem az interface_number-t?
- A hozzászóláshoz be kell jelentkezni
Minden USB device rendelkezik egy vagy több interface-szel, ezek sorszámozva vannak. Ezeken keresztül lehet kommunikálni az endpointokkal. A descriptorban benne vannak az eszköz által biztosított interfacek, ezek közül neked kell kiválasztani, hogy melyiket akarod használni. Használat előtt le kell foglalni az interfacet!
Most megnéztem a kódodat, így elsőre annyi megjegyzést tennék, hogy header fileban függvényt definiálni nem egészséges...
--
Soli Deo Gloria
- A hozzászóláshoz be kell jelentkezni
Köszönöm a segítséget!
- A hozzászóláshoz be kell jelentkezni