2012-04-26 42 views
5

Estoy tratando de escribir una aplicación de Android para leer y escribir datos de la tableta Android en nuestro dispositivo incorporado. La tableta y el dispositivo integrado se conectan a través del convertidor de USB a serie. ¿Es posible leer datos del dispositivo incorporado en nuestra tableta Android? ¿Algún código de muestra que pueda ver?Leer y escribir datos a través del puerto USB en Android 3.1

+0

¿Has visto [esto] (http://developer.android.com/guide/topics/usb/accessory.html) o [este] (http://developer.android.com/guide/topics/usb /host.html) documentación? – Jack

+0

Sí, Jack, leí el último. Empecé una nueva pregunta, por favor eche un vistazo. ¡Gracias! – dan

Respuesta

0

como un convertidor de serie es un dispositivo USB, la tableta androide tiene que actuar como un anfitrión USB. Esta característica está disponible desde Android 3.1. La documentación de la API está disponible en el android developer page e incluye ejemplos de código.

Para comunicarse realmente con el convertidor, tendrá que averiguar un poco más sobre su funcionamiento interno: hay muchos dispositivos diferentes en el mercado, algunos usan USB HID, otros usan dispositivos USB CDC o no cumplen con cualquier clase. El comando linux lsusb puede ser útil para obtener los descriptores de dispositivo/interfaz.

En un dispositivo típico CDC tendrá que interactuar con dos puntos finales a granel y, probablemente, utilizar alguna de las interfaces solicitudes relacionadas para configurar la velocidad de transmisión, etc. Consulte la especificación de clase de dispositivo de comunicación en USB implementers forum.

Si el dispositivo tiene una sola El punto final masivo IN y OUT (junto al punto final de control) puede intentar utilizar el método UsbDeviceConnection.bulkTransfer() en el punto final OUT para escribir algunos bytes en la línea serie. Existe una buena posibilidad de que esto funcione, sin embargo, para una implementación limpia, debe ajustarse a la especificación de clase.

+0

Hola, Alexander Gracias por la información. Mi conexión es que la tableta está conectada con un cable usb/serie, cuyo extremo es un puerto usb y el otro extremo es un puerto serie. El puerto serie está conectado con otro cable serie que se conecta con el otro dispositivo integrado. Una cosa que no entiendo del modo USB Host es que necesito especificar el id de vendedor, el id del producto, la clase, la subclase. ¿Cómo puedo saber esa información? Conecte el cable usb/serial con una máquina Linux y averígualo? ¡¡¡Gracias!!! – dan

+0

Hola Bill, sí, right linux o mac es útil aquí. También puede haber herramientas en Windows, pero en Linux es realmente sencillo. Puede usar una versión de arranque de linux live CD/USB Stick. Luego ejecute lsusb en un shell con su convertidor conectado a la PC. Debería aparecer en la salida del comando. El mío se ve así: 'Bus 004 Dispositivo 002: ID 067b: 2303 Prolific Technology, Inc. PL2303 Puerto serie' – Alexander

+0

Los números después de ID son _vendor_: _product_ IDs de su dispositivo. Luego ejecuta 'lsusb -v -d 067b: 2303' para obtener el descriptor completo del dispositivo. Ahí puedes leer sobre la clase y la subclase. Como no parece familiar con USB, sugiero leer un poco sobre el concepto de USB completo. Tal vez [aquí] (http://www.beyondlogic.org/usbnutshell/usb1.shtml). Esto te ayudará a lograr tu objetivo. – Alexander

Cuestiones relacionadas