2012-09-01 5 views
5

Ich muss eine Android-Anwendung, die Wert über Bluetooth von einem Bluetooth-Gerät liest mit OBD-II-Port eines Autos zu lesen.Wie mehrere Verbindungen zu einem einzigen Obd2 Bluetooth-Gerät mit Auto verbunden haben

Ich verwende die UUID SPP UUID 00001101-0000-1000-8000-00805F9B34FB.

Wenn ich 4 Threads erstellen, die eine Verbindung zum OBD-II-Gerät herstellen möchten, schlägt 3 connect() s fehl und nur ein Thread kann eine Verbindung zum Gerät herstellen.

Gibt es eine Möglichkeit, mehr Thread über Bluetooth mit einem OBD-II-Gerät zu verbinden?

Ich weiß nicht, ob das elm-237 Gerät mit mehr Threads kommunizieren kann.

+0

@Alice, bitte fügen Sie 'zufälligen' Code 'Formatierung', es reduziert die Lesbarkeit. – Charles

Antwort

7

Ich bin kein Experte für OBD/OBD-II, aber ich weiß ein wenig über serielle Ports.

Eigentlich, was Sie sehen, überrascht mich überhaupt nicht. Serial-Port-Geräte müssen normalerweise im exklusiven Modus arbeiten, sodass nur ein Aktor zu einem bestimmten Zeitpunkt mit ihnen kommunizieren kann. Es macht keinen Sinn, mehrere Threads dafür zu erstellen - das wird Ihren seriellen Port nicht "schneller sprechen" lassen, noch wird das externe Gerät (OBD-Chip) schneller reagieren! Dies ist kein Netzwerk! Um mit mehreren Geräten parallel zu kommunizieren, müssten Sie tatsächlich mehrere Kabel haben - und wahrscheinlich auch mehrere Chips.

ELM327 ist das Gerät in Ihrem OBD-2-Kabel. Es vermittelt die Kommunikation zwischen den Chips im Auto und Ihrem USB-Port und stellt einen virtuellen seriellen Port über den USB-Bus zur Verfügung. Ich habe noch nie von billigen Bluetooth-fähigen ELM327-Klonen gehört, aber ich weiß, dass es OBD-II-Bluetooth-Adapter gibt - das letzte, das ich gesehen habe kostete etwa $ 2000, da es mit einer großen Diagnose-Software und Datenbank von Autoteilen kam (Streik: siehe Kommentare) und funktionierte natürlich ohne Kabel. Aber ich denke, dass es immer noch nur einen virtuellen seriellen Port geben würde, um mit einem Gerät zu sprechen.

+0

so ist der einzige Weg ein Thread und einzelne Anfrage/Antwort für die Zeit? – esoni

+0

Ja, ich denke das ist der einzige Weg. Auf http://en.wikipedia.org/wiki/On-board_diagnostics gibt es keine Erwähnung des Multiplexens der Verbindung, erwähnt nur die Multi-Master-Kollisionsauflösung, was eine ganz andere Sache ist. Außerdem habe ich gerade ein ELM327 + Bluetooth ohne spezielle Software-Suite gefunden, und es ist ziemlich billig: http://www.amazon.com/Soliport-Bluetooth-OBDII-Diagnostic-Scanner/dp/B004KL0I9I aber dies wird wie gewohnt nimm den ganzen OBD Port und expose 1 serial .. nur keine Kabel. – quetzalcoatl

Verwandte Themen