2012-10-04 25 views
5

Ho trovato diversi thread che parlano di questo argomento, ma dopo averli letti non ho una chiara idea del mio problema.Android: Comunicazione USB Android <-> Dispositivo esterno

Abbiamo un dispositivo esterno (qualcosa di simile a un dispositivo tomtom, voglio dire, non un accessorio) e vogliamo collegare questo dispositivo a un dispositivo Android. E vogliamo avere una comunicazione seriale tra il dispositivo esterno e il dispositivo Android utilizzando una connessione USB. (In questo momento abbiamo una comunicazione tra il dispositivo esterno e altri dispositivi non Android che usano l'interfaccia RS232, ma il dispositivo esterno può gestire la comunicazione usando un cavo USB)

Come ho letto, abbiamo il supporto dell'API USB dal 3.1.

È possibile sviluppare un'applicazione Android che comunichi con il dispositivo esterno tramite cavo USB? Voglio dire, inviando i dati al dispositivo e ricevendo i dati dal dispositivo, in entrambi i modi, vogliamo utilizzare il dispositivo Android come "display".

Grazie mille in anticipo.

+0

Ho anche lo stesso requisito. abbiamo bisogno di inviare i dati alla porta USB e cavo e dispositivo esterno lo otterrà. Da questo punto il dispositivo esterno si elaborerà da solo. È possibile inviare dati a dispositivi esterni senza driver e librerie dall'applicazione? Per favore aiuto. –

risposta

12

I sto fondamentalmente facendo lo stesso che stai descrivendo. Sono ancora nelle prime fasi ma ho gestito tale comunicazione con alcuni limiti:

  1. È necessario un dispositivo che supporti l'API dell'host USB. L'API stessa è disponibile da Android 3.2 o giù di lì, ma non tutti i dispositivi sembrano supportarla. Sembra che la maggior parte dei dispositivi che eseguono> 4.0 dovrebbero funzionare, ma è comunque necessario un controllo per dispositivo. Attualmente sto usando un Acer Iconia Tab A510, che finora sembra funzionare ma ha alcuni inconvenienti: ad esempio, non è possibile caricare il dispositivo mentre si utilizza la porta USB poiché è condivisa con il caricabatterie ma non è compatibile con USB.
  2. Siccome Neil dice che l'API USB è di basso livello, quindi penso che avrai bisogno di un driver per il tuo chipset USB (quello al tuo fianco, cioè nel tuo dispositivo). Sono stato abbastanza fortunato qui perché c'è un progetto open source che lavora su chipset FTDI che sono quelli che ho scelto. Se questo è il vostro caso, si dovrebbe verificare i progetti:

Spero che questo aiuta. Come ho già detto, sto iniziando a lavorare in questo ecosistema e devo ancora orientarmi su molti "luoghi".

Cheers, Asier.

+0

Sembra essere un ottimo punto di partenza. Grazie mille (anche Royston e Neil) – Kosmo

+0

Prego. Sarebbe bello se tu potessi contrassegnarlo come se ti avesse aiutato, così gli altri lo troverebbero. ;-) – Asier

+0

una risposta così potente. + 1 –

1

Attualmente l'interfaccia adb è a senso unico. Il flusso è controllato dal PC host utilizzando adb. Osservando la tua esigenza, sembra che potresti aver bisogno di aprire il codice sorgente, risintonizzare il driver USB per consentire la comunicazione in entrambi i modi. Dopodiché, dovrai progettare la tua API personale che consente a un'applicazione di inviare messaggi tramite USB. Ciò richiederà molto lavoro in quanto l'attuale modello Android non lo supporta.

0

Se il dispositivo Android a cui si sta collegando il dispositivo, supporta la modalità host, l'utilità USB può essere d'aiuto. è comunque un api di basso livello che parla nei buffer delle richieste usb (URB). Sto scrivendo un'astrazione seriale al momento usando questa api ma al momento non è pronto per la messa in onda.

Se il dispositivo non Android è in grado di agire come ospite poi come Royston suggerisce il percorso adb potrebbe essere meglio per voi e ci sono esempi di come fare questo in fasci api Versione post api 12.