Android Developers Italia

Sezioni tecniche => Altri problemi => Topic aperto da: esoni - 18 Giugno 2012, 17:30:37 CEST

Titolo: APPL CHE PARLA CON LA CHIAVE BLUETOOTH OBD2 PER AUTOMOBILI
Inserito da: esoni - 18 Giugno 2012, 17:30:37 CEST
ciao ragazzi per la mia tesi devo implementare uno appl per android di diagnosi per automobili, solo che non so da dove partire.
la mia appl deve "parlare" via bluetooth con una chiavetta che usa il protocollo OBD2. Quindi per prima cosa devo riuscire a capire come la mia appl possa comunicare con la chiavetta e come funziona il protocollo OBD2. Accetto qualsiasi consiglio e link che mi possa aiutare :(
Titolo: Re:APPL CHE PARLA CON LA CHIAVE BLUETOOTH OBD2 PER AUTOMOBILI
Inserito da: Cromir - 18 Giugno 2012, 17:49:14 CEST
Ciao,

devo fare la stessa identica tesi...ho comprato l'apparecchio che via bluetooth spedisce i dati, il problema è che non sono ancora riuscito a trovare una specifica del protocollo...ed ovviamente l'app Torque non è open source.. :D

Magari mandami un messaggio in pvt con la tua mail che ci teniamo in contatto su eventuali sviluppi.. :)
Titolo: Re:APPL CHE PARLA CON LA CHIAVE BLUETOOTH OBD2 PER AUTOMOBILI
Inserito da: Defkon1 - 18 Giugno 2012, 18:01:56 CEST
OBD2 è una serie di regole che stabiliscono una standardizzazione per eventuali protocolli che vogliono essere compatibili:

Citazione
An OBD2 compliant vehicle can use any of the five communication protocols: SAE J1850 PWM, SAE J1850 VPW, ISO9141-2, ISO14230-4 (KWP2000), and since 2003 also ISO 15765-4/SAE J2480. ELM-USB and OBDTester support all of them.

nella vostra tesi dovrete quindi partire decidendo quale/i protocollo/i volete supportare, in base anche alla marca di auto/camion che volete gestire e alla piedinatura della chiave in vostro possesso...

qualche riferimento:
- OBD2 protocols (http://www.obdtester.com/obd2_protocols)
- http://www.e-ope.ee/_download/euni_repository/file/2907/OBD2_protocols.pdf
-
        Scanning OBD2 or OBD II Protocols
      - YouTube
   (http://www.youtube.com/watch?v=OH1CGU-TGbA)

ovviamente ogni produttore (GM, Fiat,...) punta ad avere propri sistemi diagnostici con propri sistemi, in modo da lucrare anche lì (vedi Fiat ECU Scanner o il Bosch Esi[tronic]) e poter definire funzionalità anche fuori specifiche standard... il tutto ovviamente senza pubblicare uno straccio di documentazione per sviluppatori...

buona fortuna!
Titolo: Re:APPL CHE PARLA CON LA CHIAVE BLUETOOTH OBD2 PER AUTOMOBILI
Inserito da: undead - 18 Giugno 2012, 18:07:07 CEST

 android-obd-reader -
 
 
 OBD-II reader for Android devices - Google Project Hosting
  (http://code.google.com/p/android-obd-reader/)

forse può aiutare.
Titolo: Re:APPL CHE PARLA CON LA CHIAVE BLUETOOTH OBD2 PER AUTOMOBILI
Inserito da: esoni - 18 Giugno 2012, 18:13:14 CEST
grazie undead! quello che mi hai linkato è una libreria che implementa le api per obd2 ! favoloso... sec te posso usarla per l amia tesi o devo implementare tutto da solo ?
Titolo: Re:APPL CHE PARLA CON LA CHIAVE BLUETOOTH OBD2 PER AUTOMOBILI
Inserito da: Cromir - 18 Giugno 2012, 18:20:19 CEST

 android-obd-reader -
 
 
 OBD-II reader for Android devices - Google Project Hosting
  (http://code.google.com/p/android-obd-reader/)

forse può aiutare.

A naso direi che è proprio quello che ci serve, grazie 1000!! :)
Titolo: Re:APPL CHE PARLA CON LA CHIAVE BLUETOOTH OBD2 PER AUTOMOBILI
Inserito da: undead - 18 Giugno 2012, 18:21:39 CEST
Eh è una domanda non facile.  Dipende che dice il professore. ;-)

Nel senso che sicuramente anhe usando una libreria devi farti la tua app con tanto di interfaccia e tutto il resto. In più devi comunque fare dei test, magari adattare qualcosa, etc. Bisognerebbe capire se lo scopo principale è fare una app android o implementare una specifica.

Secondo me visto che si tratta di specifiche non è che varino più di tanto! Quella è e quella rimane.

La cosa migliore è utilizzare la libreria come riferimento, magari prendendo i pezzi che ti servono e modificandoli secondo i tuoi bisogni.  ;-)

Titolo: Re:APPL CHE PARLA CON LA CHIAVE BLUETOOTH OBD2 PER AUTOMOBILI
Inserito da: esoni - 18 Giugno 2012, 18:25:49 CEST
io credo il fine sia l applicazione per android.
mi preoccupava dover implementare da 0 le api di OBD2.. credo che utilizzero queste librerie magari personalizzandole .
un altra cosa che mi fa paura della mia tesi è dover implementare i widget da usare ( tachimetro, ecc vedi figura http://www.androidiani.com/applicazioni/android-come-cruscotto-obd2-83898 ) ... sarà un casino ...  puoi darmi qualche consiglioa riguiardo ?
Titolo: Re:APPL CHE PARLA CON LA CHIAVE BLUETOOTH OBD2 PER AUTOMOBILI
Inserito da: esoni - 18 Giugno 2012, 18:26:13 CEST
cmq io dovrei riuscire a fare  praticamente:
http://www.androidiani.com/applicazioni/android-come-cruscotto-obd2-83898

Titolo: Re:APPL CHE PARLA CON LA CHIAVE BLUETOOTH OBD2 PER AUTOMOBILI
Inserito da: undead - 18 Giugno 2012, 18:33:38 CEST
io credo il fine sia l applicazione per android.
mi preoccupava dover implementare da 0 le api di OBD2.. credo che utilizzero queste librerie magari personalizzandole .
un altra cosa che mi fa paura della mia tesi è dover implementare i widget da usare ( tachimetro, ecc vedi figura http://www.androidiani.com/applicazioni/android-come-cruscotto-obd2-83898 ) ... sarà un casino ...  puoi darmi qualche consiglioa riguiardo ?
Siamo OT, ci sono decine e decine di thread sugli widget.

Per non appesantire la discussione finendo a parlare degli widget ti do giusto qualche diritta:
- se hai bisogno di leggere dati in background anche col telefono in standby (ma potrebbe non servirti) occhio a due cose: wake lock e alarmmanager.
- il wake lock tiene "sveglio" il device, l'alarm manager permette di lanciare operazioni anche a telefono spento.
- in linea di principio crei un servizio in background, richiami il servizio con l'alarm manager attraverso un broadcast e poi da lì fai quello che vuoi
- occhio che in ICS connessione e accesso al filesystem non sono permessi nel thread della UI, quindi devi usare per esempio un asynctask. L'asynctask gira su un altro thread quindi in quello puoi fare le tue operazioni
- nella funzione dell'asynctask chiamata dopo che l'asynctask ha finito il proprio task sei nel thread della UI e da lì puoi aggiornarti il widget.

Purtroppo di default gli widget si aggiornano con intervalli di tempo "lunghissimi".

 :-)
Titolo: Re:APPL CHE PARLA CON LA CHIAVE BLUETOOTH OBD2 PER AUTOMOBILI
Inserito da: esoni - 19 Giugno 2012, 10:25:54 CEST
sto studiandomi le api del bluetooth ... e diciamo c è sempre un lato client e un lato server nella comunicazione... io devo implementare solo il lato client ? ovvero la chiavetta obd2 funge da lato server ?
Titolo: Re:APPL CHE PARLA CON LA CHIAVE BLUETOOTH OBD2 PER AUTOMOBILI
Inserito da: undead - 19 Giugno 2012, 10:36:53 CEST
Credo, ma non vorrei sbagliarmi, che quando si parla esplicitamente di server/client bluetooth si faccia riferimento alla connessione via bluetooth tra DUE device android.

Nel caso di un device bluetooth come un auricolare da documentazione sembra che tu debba utilizzare la classe BluetoothDevice e chiamare  la funzione BluetoothDevice.createRfcommSocketToServiceRecord per creare un socket.

Ad occhio e croce il concetto è che un device bluetooth mette a disposizione dei servizi ai quali tu accedi attraverso un socket.

Quindi la risposta alla tua domanda è che nel caso di una chiavetta tu sei il client e il device è il server che ti mette a disposizione un servizio.

Almeno questo è quello che ho capito io.  :-P
Titolo: Re:APPL CHE PARLA CON LA CHIAVE BLUETOOTH OBD2 PER AUTOMOBILI
Inserito da: esoni - 19 Giugno 2012, 10:47:36 CEST
pero le api parlano di Bluetooth devices e non di android ... quindi in teoria dovrei riuscire a comunicare anche con un qualsiasi device bluetooth.
Titolo: Re:APPL CHE PARLA CON LA CHIAVE BLUETOOTH OBD2 PER AUTOMOBILI
Inserito da: undead - 19 Giugno 2012, 11:03:43 CEST
La documentazione dice questo.

Citazione
The interface for Bluetooth Sockets is similar to that of TCP sockets: Socket and ServerSocket. On the server side, use a BluetoothServerSocket to create a listening server socket. When a connection is accepted by the BluetoothServerSocket, it will return a new BluetoothSocket to manage the connection. On the client side, use a single BluetoothSocket to both initiate an outgoing connection and to manage the connection.


Io ci leggo questo: se tu vuoi connettere due device android uno fa da server e ascolta tramite un serversocket che poi ti genera un socket mentre l'altro fa da client e usa semplicemente un socket per far "partire" e in seguito gestire la connessione al server.
Titolo: Re:APPL CHE PARLA CON LA CHIAVE BLUETOOTH OBD2 PER AUTOMOBILI
Inserito da: esoni - 19 Giugno 2012, 11:05:48 CEST
ok ma nel mio caso e in tutti i casi che bisogna connettersi cn un device via bluetooth dove non gira codice scritto da noi come si fa ?!"?"?
HELP
Titolo: Re:APPL CHE PARLA CON LA CHIAVE BLUETOOTH OBD2 PER AUTOMOBILI
Inserito da: Ricky` - 19 Giugno 2012, 11:10:34 CEST
I protocolli esistono proprio per questo ;) Dovresti cercare di capire il protocollo com'è :) Se in rete si trova poco o niente prova magari a contattare il produttore per chiedere se ti fornisce delle specifiche.
Titolo: Re:APPL CHE PARLA CON LA CHIAVE BLUETOOTH OBD2 PER AUTOMOBILI
Inserito da: undead - 19 Giugno 2012, 11:11:25 CEST
Aggiungo una cosa perchè non voglio creare confusione: hai ragione, nessuno ti obbliga ad usare due device android.

La mia era solo una puntualizzazione: il lato server della documentazione bluetooth di android riguarda il tuo device android che fornisce un servizio all'esterno. Nel caso specifico la chiavetta OBD2 è il tuo server e tu devi "solo" scrivere un client che utilizzi i servizi messi a disposizione.

Il fatto che nella documentazione si faccia riferimento all'interazione server/client e ai serversocket/socket riguarda il caso in cui tu scrivi una app che fornisce un servizio (il server) e una app che ne usufruisce (il client). Parlando di android io presumo che chiunque si implementi il lato server su android lo faccia supponendo anche di scriversi uno straccio di client android.

Ovviamente nessuno ti vieta di scriverti un client per iphoGne. Ops, volevo dire iphone.   :D

 ;-)