2011-06-25 6 views
6

¿Cuál es la forma más sencilla de obtener acceso sin formato a dispositivos HID en OS X?Acceso sin formato a dispositivos HID en OS X

He estado buscando en los ejemplos de IOKit, pero incluso la apertura de un dispositivo parece innecesariamente compleja, involucra múltiples devoluciones de llamada e incluye cosas de media docena de bibliotecas.
libusb está disponible para OS X, pero el kernel toma todos los dispositivos HID para acceso exclusivo, y he estado obteniendo un comportamiento extraño al tratar de usar un .kext sin código para evitar que se asocie con mi dispositivo (evita que el kernel se agarre el dispositivo inicialmente, pero cualquier llamada para configurar el dispositivo parece hacer que el kernel tome el dispositivo fuera del pequeño script de python libusb con el que estoy probando).

Básicamente, tengo un dispositivo HID que solo transmite datos. Quiero abrirlo para un acceso (idealmente exclusivo) y obtener el flujo de datos.

Todos los ejemplos que he encontrado en los documentos de IOKit son realmente complejos, en comparación con las ~ 8 líneas que tomaría en libusb. Debe haber una manera más simple que no sea la biblioteca de una tercera parte.

Vale la pena señalar que no estoy totalmente familiarizado con la programación para OS X en cualquier capacidad.

apoyo Python sería un buen complemento

Respuesta

1

Desafortunadamente, no hay otra manera de utilizar HID Manager apis . Acceso bruto a dispositivos HID en OS X no es compatible.

El documentation deja claro:

HID family. Through the HID Manager, the HID family provides a device 
interface for accessing a variety of devices, including joysticks and other 
game devices, audio devices, non-Apple displays, and UPS (uninterruptible 
power supply) devices. 

acceso crudo a través de POSIX APIs es sólo available para el almacenamiento, redes y dispositivos de serie:

Using POSIX APIs 
For each storage, network, and serial device the I/O Kit dynamically 
creates a device file in the file system’s /dev directory when it discovers 
a device and finds a driver for it, either at system startup or as part of 
its ongoing matching process. If your device driver is a member of the I/O 
Kit’s Storage, Network, or Serial families, then your clients can access your 
driver’s services by using POSIX I/O routines. 

por lo que puede utilizar HID Manager apis directamente o puede usar libusb o (como la otra respuesta menciona) hidapi que no son más que librerías wrapper sobre HID Manager apis. La ventaja de utilizar estas bibliotecas es que abstraen la mayoría de las llamadas de bajo nivel, lo que las hace más fáciles de usar.