Sto provando a scrivere un'app per Android per leggere e scrivere dati dal tablet Android sul nostro dispositivo incorporato. Il tablet e il dispositivo incorporato sono collegati tramite convertitore da USB a seriale. È possibile leggere i dati dal dispositivo incorporato nel nostro tablet Android? Qualche esempio di codice che posso dare un'occhiata?Leggere e scrivere dati tramite porta USB su Android 3.1
risposta
Come un convertitore seriale è un dispositivo USB , la tavoletta android deve agire come un ospitante USB. Questa funzione è disponibile da Android 3.1. La documentazione API è disponibile su android developer page e include esempi di codice.
Per comunicare effettivamente con il convertitore, è necessario scoprire qualcosa in più sui suoi interni: ci sono molti dispositivi diversi sul mercato, alcuni che utilizzano USB HID, altri utilizzano dispositivi USB CDC o non si accontentano nemmeno di qualsiasi classe Il comando linux lsusb potrebbe essere utile per ottenere i descrittori dispositivo/interfaccia.
In un tipico dispositivo CDC si dovrà interagire con due punti finali di massa e probabilmente usare un po 'l'interfaccia richieste correlate a impostare la velocità di trasmissione, ecc Vedere la specifica comunicazione Device Class sulla USB implementers forum.
Se il dispositivo ha un solo IN e un endpoint di massa in uscita (accanto all'endpoint del controllo) si potrebbe provare a utilizzare il metodo UsbDeviceConnection.bulkTransfer() sull'estremità OUT per scrivere alcuni byte sulla linea seriale. C'è una buona probabilità che funzioni solo, tuttavia per un'implementazione pulita è necessario attenersi alle specifiche della classe.
Ciao, Alexander Grazie per le informazioni. La mia connessione è il tablet è collegato con un cavo USB/seriale, la cui estremità è una porta USB e l'altra estremità è una porta seriale. La porta seriale è collegata con un altro cavo seriale che si collega con l'altro dispositivo incorporato. Una cosa che non capisco per la modalità Host USB è che ho bisogno di specificare id vendro, id prodotto, classe, sottoclasse. Come posso conoscere queste informazioni? Collegare il cavo USB/seriale con una macchina Linux e scoprirlo? Grazie!!! – dan
Ciao Bill, sì giusto, Linux o Mac è utile qui. Potrebbero esserci anche strumenti sotto Windows, ma in Linux è davvero semplice. È possibile utilizzare una versione di avvio di Live CD/USB Stick di Linux. Quindi esegui lsusb in una shell con il tuo convertitore collegato al PC. Dovrebbe apparire nell'output del comando. Il mio assomiglia a: 'Bus 004 Dispositivo 002: ID 067b: 2303 Prolific Technology, Inc. Porta seriale PL2303' – Alexander
I numeri dopo l'ID sono gli ID _vendor_: _product del tuo dispositivo. Quindi lancia "lsusb -v -d 067b: 2303' per ottenere il descrittore completo del dispositivo. Qui puoi leggere la classe e la sottoclasse. Dato che non ti sembra abbastanza familiare con l'USB, consiglio di leggere un po 'sull'intero concetto di USB. Forse [qui] (http://www.beyondlogic.org/usbnutshell/usb1.shtml). Questo ti aiuterà a raggiungere il tuo obiettivo. – Alexander
Io suggerisco di usare l'USB-per-Android lib porting, che ha il driver PL2303 già implementato: https://code.google.com/r/felixhaedicke-usb-serial-for-android
ho usato con successo.
Avete visto [questo] (http://developer.android.com/guide/topics/usb/accessory.html) o [questo] (http://developer.android.com/guide/topics/usb /host.html) documentazione? – Jack
Sì, Jack, ho letto quello successivo. Ho iniziato una nuova domanda, per favore date un'occhiata. Grazie! – dan