Autore Topic: Android Serial Port  (Letto 2950 volte)

Offline Giovanni

  • Nuovo arrivato
  • *
  • Post: 40
  • Respect: 0
    • Google+
    • giovanniperroneonebit
    • giovanniperrone
    • giovanniperrone
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Sistema operativo:
    Ubuntu / Vista
Android Serial Port
« il: 16 Giugno 2010, 13:01:03 CEST »
0
Ciao,
 c'è un modo per scrivere dati sulla porta seriale (USB)? Sia con Android SDK, sia NDK.

Ho bisogno di fare le seguenti operazioni (sintassi linux):

Codice: [Seleziona]

echo -e "\xFF\x00\x00" > /dev/ttyUSB0




Offline Giovanni

  • Nuovo arrivato
  • *
  • Post: 40
  • Respect: 0
    • Google+
    • giovanniperroneonebit
    • giovanniperrone
    • giovanniperrone
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Sistema operativo:
    Ubuntu / Vista
Re:Android Serial Port
« Risposta #1 il: 18 Giugno 2010, 17:03:05 CEST »
0
Nessuno?

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:Android Serial Port
« Risposta #2 il: 19 Giugno 2010, 13:35:27 CEST »
0
Non ne ho la benché minima idea. Peró credo che qualcosa si puó fare (probabilmente con l'NDK) dato che ci sono stati alcuni che hanno usato telefoni android a bordo di robot fatti in casa e se non sbagli usavano l'usb.
Postate il LogCat LogCat LogCat LogCat LogCat

Offline Giovanni

  • Nuovo arrivato
  • *
  • Post: 40
  • Respect: 0
    • Google+
    • giovanniperroneonebit
    • giovanniperrone
    • giovanniperrone
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Sistema operativo:
    Ubuntu / Vista
Re:Android Serial Port
« Risposta #3 il: 19 Giugno 2010, 14:49:33 CEST »
0
Grazie, proverò a spulciare un po' NDK...

Se qualcun'altro ha altri suggerimenti, son qui.

Offline Qlimax

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 757
  • Respect: +202
    • Google+
    • _Qlimax
    • Mostra profilo
    • www.egsolutions.ch
  • Dispositivo Android:
    Galaxy Nexus - Nexus One - Wildfire - Magic
  • Play Store ID:
    egsolutions.ch
  • Sistema operativo:
    Ubuntu 12.04, Windows 7
Re:Android Serial Port
« Risposta #4 il: 19 Giugno 2010, 15:55:06 CEST »
0
Ciao giovanni,
questo comando:
Codice: [Seleziona]
echo -e "\xFF\x00\x00" > /dev/ttyUSB0non fa altro che scrivere su un file, giusto?

Il problema sta nel fatto che per accedere in lettura/scrittura /dev/ttyUSB0 ti servono i permessi di root.

[facile] Uso dei permessi di root in un'applicazione - Android Developers Italia

nella guida di blackgin che ti ho linkato, si esegue un comando dopo aver ottenuto i permessi di root, tu invece dovresti adattare un attimo questa guida per scrivere su un file...
(potresti anche provare ad passare echo -e "\xFF\x00\x00" > /dev/ttyUSB0 come comando)

quindi, puoi provare ad adattare la guida alla tua necessità, scrivendo un file:

Codice (Java): [Seleziona]
        try {
                        BufferedWriter bw=new BufferedWriter(new FileWriter(new File("/dev/ttyUSB0")));
                        bw.write("\\xFF\\x00\\x00");
                        bw.newLine();
                        bw.close();
                } catch (IOException e) {
                        e.printStackTrace();
                }





Niente di sicuro, non ti resta che provare.
Ps: l'NDK non da privilegi superiori.


Saluti,
Qlimax

Offline Giovanni

  • Nuovo arrivato
  • *
  • Post: 40
  • Respect: 0
    • Google+
    • giovanniperroneonebit
    • giovanniperrone
    • giovanniperrone
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Sistema operativo:
    Ubuntu / Vista
Re:Android Serial Port
« Risposta #5 il: 20 Giugno 2010, 12:31:58 CEST »
0
Grazie Qlimax, in effetti non ci avevo pensato ad una cosa del genere (che è anche la più ovvia! doh!). Ho una rom cooked con permessi di root.
Se riesco lo provo oggi, purtroppo domani dovrò mandare in assistenza il mio Acer Liquid :(

Grazie ancora... Forza Swiss! :)


Offline Giovanni

  • Nuovo arrivato
  • *
  • Post: 40
  • Respect: 0
    • Google+
    • giovanniperroneonebit
    • giovanniperrone
    • giovanniperrone
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Sistema operativo:
    Ubuntu / Vista
Re:Android Serial Port
« Risposta #6 il: 20 Giugno 2010, 14:05:05 CEST »
0
Provato mi da "FileNotFoundException" (sia dall'Emu, sia dal Liquid):

Codice (Java): [Seleziona]
06-20 11:59:17.115: WARN/System.err(799): java.io.FileNotFoundException: /dev/ttyUSB0
Teoricamente Android ha solo 1 porta USB quindi può essere solo "ttyUSB0" oppure la porta USB è mappata in altro modo?

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:Android Serial Port
« Risposta #7 il: 20 Giugno 2010, 14:45:55 CEST »
0
Hai provato a fare un ls /dev? Sul mio n1 con kernel froyo c'è solo la ttyHS0.
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !

Offline ScarfaceIII

  • Utente junior
  • **
  • Post: 112
  • Respect: +13
    • raferalston12
    • Mostra profilo
  • Dispositivo Android:
    Nexus One
  • Sistema operativo:
    GNU/Linux, Ubuntu 10.04 / Windows 7
Re:Android Serial Port
« Risposta #8 il: 20 Giugno 2010, 16:53:09 CEST »
0
esatto, volevo suggerire la stessa cosa. non ho avuto possibilità di provarlo, ma volevo proprio chiedere se USB0 era proprio il dev giusto, voglio dire: anche con le partizioni del disco non si è mai sicuri che sia hda o sda, dipende un po' dalla distribuzione o dall'entropia dell'universo in quell'istante a volte  o_O

ciau

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:Android Serial Port
« Risposta #9 il: 21 Giugno 2010, 09:44:49 CEST »
0
Ma non c'é un metodo per ottenere la denominazione della porta seriale? Mi pare strano che l'unica via sia l'hard-coding del percorso
Postate il LogCat LogCat LogCat LogCat LogCat

Offline Giovanni

  • Nuovo arrivato
  • *
  • Post: 40
  • Respect: 0
    • Google+
    • giovanniperroneonebit
    • giovanniperrone
    • giovanniperrone
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Sistema operativo:
    Ubuntu / Vista
Re:Android Serial Port
« Risposta #10 il: 21 Giugno 2010, 10:15:03 CEST »
0
Non posso provare con "ttyHS0" il Liquid è partito in assistenza.
Appena torna provo (spero presto).

(Grazie a tutti per il supporto).

In effetti sarebbe opportuna un'enumerazione dei dispositivi e delle porte. Una sorta di "lsusb".

Offline Berserker

  • Nuovo arrivato
  • *
  • Post: 17
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus one
  • Play Store ID:
    Berserker
  • Sistema operativo:
    Windows 7
Re:Android Serial Port
« Risposta #11 il: 03 Maggio 2011, 14:34:47 CEST »
0
Mi associo alla richiesta: cercando un pò in rete ho trovato un porting della libreria "libusb" per Android e sono riuscito a compilarla tramite NDK. Ho linkato la libreria ad un mio eseguibile che eseguo come root, ma la funzione "libusb_init" restituisce sempre errore. Investigando più a fondo ho scoperto che il problema (almeno per il momento...) risiede nel file "linux_usbfs.c", più precisamente in questa funzione:
Codice: [Seleziona]
static const char *find_usbfs_path(void)
{
        const char *path = "/dev/bus/usb";
        const char *ret = NULL;

        if (check_usb_vfs(path)) {
                ret = path;
        } else {
                path = "/proc/bus/usb";
                if (check_usb_vfs(path))
                        ret = path;
        }

        usbi_dbg("found usbfs at %s", ret);
        return ret;
}
"/dev/bus/usb" ovviamente non esiste sul mio N1...qualcuno ne sa qualcosa in più?