2011-09-02 14 views
12

Me gustaría escribir una aplicación para iPhone/iPad que pueda comunicarse a través de una conexión USB con un programa para Mac o PC (que yo también escribiría). ¿Alguien sabe cómo podría hacer esto? (Me doy cuenta de que puedo tener que hacer jailbreak en mi iPad)Comunicación USB entre iPad y Mac o PC

+1

Si es posible, definitivamente tendrá que hacer jailbreak: sé que no puede hacer esto con el SDK normal. –

+0

Una idea sería intentar usar el puerto serie (UART o /dev/tty.iap). No estoy seguro si puede hacerlo sin ningún hardware adicional, pero aquí hay algunos enlaces sobre el tema: http://devdot.wikispaces.com/Iphone+Serial+Port+Tutorial http://hcgilje.wordpress.com/2010/02/15/iphone-serial-communication/ – adig

Respuesta

-1

¿Tiene que ser una conexión USB?

Si no es así, el GCDAsyncSocket de Robbie Hanson es ideal para conectar todo tipo de dispositivos Apple. Lo usé el año pasado para conectar un montón de iPads a una sola aplicación que se ejecuta en un Mac mini.

5

La comunicación de socket a través de USB (USBMux) puede satisfacer sus necesidades. Cuando un iPad o iPhone se conecta a una Mac, habrá una descripción del dispositivo/var/run/usbmuxd. Puede crear un socket y conectarlo a/var/run/usbmuxd y enviar/recibir datos empaquetados a/o desde el dispositivo iOS. Los datos deben ser envueltos.

Aquí hay una breve referencia de theiphonewiki http://theiphonewiki.com/wiki/index.php?title=Usbmux. Lo que puedo proporcionar es el código de muestra para conectarse a usbmuxd.

struct sockaddr_un endpoint; 
size_t size; 

_usbMuxSocket = socket(PF_LOCAL, SOCK_STREAM, 0); 

endpoint.sun_family = AF_LOCAL; 
strncpy(endpoint.sun_path, "/var/run/usbmuxd", 17); 
size = (offsetof (struct sockaddr_un, sun_path) 
     + strlen (endpoint.sun_path) + 1); 

connect(_usbMuxSocket, (struct sockaddr *) &endpoint, size); 

Después de eso tienes que "conectar" al puerto que tu aplicación escucha en el iPad. El proceso de "conexión" discutido en la lista de la página wiki arriba en la sección Secuencia de eventos. Después del trabajo de preparación realizado, puede usar el socket para enviar y leer datos.

+0

¿Hay alguna razón por la que no puedas simplemente llamar a 'abrir' y usar ese fd resultante? – Dustin