2012-09-01 11 views
5

Devo fare un'applicazione Android che legge il valore via Bluetooth da un dispositivo Bluetooth collegato alla porta OBD-II di un'automobile.Come avere più connessioni a un singolo dispositivo bluetooth Obd2 collegato all'auto

Uso UUID SPP UUID 00001101-0000-1000-8000-00805F9B34FB.

Se creo 4 thread che si desidera connettere al dispositivo OBD-II, 3 connect() non riescono e solo un thread è in grado di connettersi al dispositivo.

C'è un modo per collegare più thread a un dispositivo OBD-II tramite Bluetooth?

Non so se il dispositivo elm-237 è in grado di comunicare con più thread.

+0

@Alice, si prega di astenersi dall'aggiungere 'codice' casuale' formattazione', riduce la leggibilità. – Charles

risposta

7

Non sono un esperto di OBD/OBD-II, ma conosco un po 'le porte seriali.

In realtà, quello che vedi non mi sorprende affatto. I dispositivi con porta seriale di solito devono funzionare in modalità esclusiva, quindi solo un attore può parlare con loro in un singolo punto del tempo. Non c'è assolutamente alcun motivo per creare più thread per questo: ciò non renderà la porta seriale "più veloce", né renderà più veloce il dispositivo esterno (chip OBD)! Questa non è una rete! Per parlare con diversi dispositivi in ​​parallelo, dovresti avere diversi cavi effettivi e probabilmente anche diversi chip.

ELM327 è il dispositivo nel cavo OBD-2. Media la comunicazione tra i chip nell'automobile e la porta USB ed espone una porta seriale virtuale sul bus USB. Non ho mai sentito parlare di cloni ELM327 economici Bluetooth, ma so che esistono adattatori Bluetooth OBD-II: l'ultima volta che ho visto lo costava circa $ 2000 dato che arrivava con un grande software diagnostico e database di parti di automobili (sciopero: vedi commenti) e, naturalmente, ha funzionato senza cavi. Ma penso che continuerebbe a fornire solo 1 porta seriale virtuale per parlare con 1 dispositivo.

+0

quindi l'unico modo è un thread e una singola richiesta/risposta per il tempo? – esoni

+0

Sì, penso che questo sia l'unico modo. Su http://en.wikipedia.org/wiki/On-board_diagnostics non si fa menzione del multiplexing della connessione, menziona solo la risoluzione della collisione multi-master, che cosa è molto diversa. Inoltre, ho appena trovato un ELM327 + Bluetooth senza suite software specialistica, ed è piuttosto economico: http://www.amazon.com/Soliport-Bluetooth-OBDII-Diagnostic-Scanner/dp/B004KL0I9I ma questo sarà come al solito prendere l'intera porta OBD ed esporre 1 seriale .. solo senza cavi. – quetzalcoatl