2012-10-08 11 views
11
ByteBuffer byteBuffer = ByteBuffer.allocate(9);;  
UsbRequest request = new UsbRequest(); 
request.initialize(mConnection,mEndpointIntr); 
boolean b = request.queue(byteBuffer, 9); 
Log.d(TAG, "start the request wait"); 
UsbRequest ur = mConnection.requestWait(); 

quiero usar interrupción USB Android. El código anterior es un hilo para recibir datos de mi propio tablero USB. Pero cuando trato de llamar al UsbRequest ur = mConnection.requestWait(); la función no regresa, siempre se ejecuta en requestWait(). ¿Por qué pasó esto?androide USB requestWait no regreso

Respuesta

8

El requestWait() en el código va a esperar el resultado de la request.queue(byteBuffer, 9)

Estas son algunas de las posibles razones por las que no está de Regreso:

  1. Su cola de solicitudes está en un punto final diferente a lo que su El dispositivo USB está realmente enviando datos. Verifique que está escuchando en la interfaz y punto final correctos.

  2. En el lado del firmware del dispositivo USB, no cree su punto final de interrupción en clase de interfaz común como HID. Cree una nueva interfaz específica para el proveedor; de lo contrario, kernel puede obtener la interfaz si es HID y la cola de solicitud puede fallar, esto es lo que me sucedió.

0

En mi propio dispositivo USB HID con dos puntos finales (IN y OUT) conectados a MK802, me encontré con el mismo problema (cola una solicitud devuelto false). Tuve reclamoInterface llamado con falso. Establecer lo siguiente ayudado, recibo datos bien.

c.claimInterface(device.getInterface(0), true);