Herstellen einer Verbindung mit einem Gerät mithilfe der chrome.bluetooth-API

8

Ich habe versucht, eine Chrome-App zu erstellen, die die chrome.bluetooth-API verwendet, um eine Verbindung zu erstellen und mit ihr zu kommunizieren Texas Instruments CC2541 SensorTag Gerät.

Der Code erkennt das SensorTag und ruft die Geräteinformationen ab, aber die auf dem Gerät aufgerufenen Methoden "getProfiles" und "getServices" geben beide leer zurück, und die Methode "connect" gibt den Fehler "Profile not found: invalid uuid" .

Ich habe mehrere Variationen von UUIDs aus dem Beispiel der SensorTag Android App ausprobiert (wie in der Code), aber alle geben den gleichen "ungültigen uuid" Fehler.

Auch wenn Sie dieses spezielle Problem nicht beheben können, wäre es gut, von jedem zu hören, der die chrome.bluetooth-API überhaupt genutzt hat. Meine bisherige Erfahrung ist, dass es zu sehr ein bewegliches Ziel ist, um es wirklich zu benutzen (ja, ich weiß, es ist nur 'Dev' ...), aber ich würde es wirklich gerne funktionieren lassen, wenn es möglich wäre.

>

Danke, dass Sie gesucht haben - jede Hilfe oder Ideen, die Sie sehr schätzen!

BEARBEITEN: Zusätzliche Plattforminformationen
Ich habe das zunächst unter Windows 7 mit einem CSR 4.0 Bluetooth Dongle versucht, aber das stellt sich als völlig vergeblich heraus: Mit dem generischen Windows 7 BT-Treiber kann Chrome den Adapter erkennen und BT-Geräte erkennen, aber der Treiber unterstützt Low Energy nicht kann das Gerät, das ich möchte, nicht erkennen. Mit dem CSR-Treiber, der LE unterstützt und den ich unter Windows "Bluetooth-Geräte" verwenden kann, um eine Verbindung zu LE-Geräten herzustellen, kann Chrome.bluetooth den Bluetooth-Adapter überhaupt nicht erkennen.

Ich arbeite jetzt mit einem Acer C720 Chromebook, das aussieht, als sollte es funktionieren, aber ich bekomme einfach die "Ungültige UUID" Nachricht, was immer ich versuche.

(Obwohl die Chrome OS- und Win / Mac / Linux-Entwicklerversionen von Chrome nicht mit den Updates übereinstimmen - Chrome OS war eine Zeitlang hinter den anderen zurück, hat jetzt aber aufgeholt - also für eine Zeit, die ein anderes Format erfordert. manifest.json 'Dateien, um die App auf den verschiedenen Plattformen zu starten.)

main.js

%Vor%

index.html

%Vor%

manifest.json

%Vor%

background.js

%Vor%     
Kev K 21.02.2014, 16:45
quelle

4 Antworten

8

Ich stieß auf dasselbe Problem. Nach einigem Graben konnte ich zwei Probleme mit dem Muster feststellen, das ich benutzte.

Das erste Problem ist, dass sich herausstellt, dass ein leeres "Bluetooth" -Objekt im Manifest nicht wirklich gültig ist, obwohl es Beispiele gibt, die es benutzen und Chrome sich nicht beklagen:

%Vor%

Stattdessen sollte Ihr Bluetooth-Manifest-Eintrag in etwa so aussehen:

%Vor%

Die Dokumentation dafür, so dass es ist, kann in diesem Chrome-Commit vor zwei Wochen gefunden werden: ​​Ссылка

Die andere Idiosynkrasie dieser API, die ich beim Nachverfolgen dieses Problems entdeckt habe, ist, dass nicht nur der Verbindungsaufruf Fehler in "chrome.runtime.lastError" hinterlassen kann, sondern dass alle diese Aufrufe Nachrichten hinterlassen können. Wenn Sie lastError nach Ihrem addProfile-Aufruf überprüfen, werden Sie wahrscheinlich feststellen, dass sich chrome über Berechtigungen beschweren: "Berechtigung zum Hinzufügen eines Profils verweigert."

Gehen Sie zurück und lesen Sie die chrome.bluetooth API-Dokumentation, die es tatsächlich in der Beschreibung oben steht (obwohl ich es genauso vermisst habe wie Sie)

  

Verwenden Sie die chrome.bluetooth-API, um eine Verbindung zu einem Bluetooth-Gerät herzustellen. Alle Funktionen melden Fehler über chrome.runtime.lastError.

(Hervorhebung hinzugefügt) Ссылка

Hoffe, das hilft.

    
Jesse S 25.02.2014 00:33
quelle
2

Das von Ihnen verwendete CSR-Tag ist ein Low Energy-Gerät? In diesem Fall sollten Sie stattdessen die chrome.bluetoothLowEnergy-API verwenden: Ссылка

Für ein Beispiel siehe: Ссылка

    
Scott James Remnant 17.06.2014 00:38
quelle
0

Bei einigen Updates scheint das Manifest-Format aufgrund von Ссылка

leicht verändert zu sein %Vor%     
khankuan 31.03.2014 04:48
quelle
0

Eine andere Lösung gefunden scheint auch gut: www.github.com/bcsphere/bluetooth

Es unterstützt iOS / Android Bluetooth JS API. Es unterstützt nicht nur BLE / GATT, sondern auch BT2.1 classic (um zB Serial port / rfcomm profile zu unterstützen).

Sie implementieren sogar einige Service- / Profilbibliotheken.      Ссылка

Verschiedene Arten von Open-Source-Beispielen:      Ссылка

    
user4029319 11.09.2014 04:15
quelle