BLE -GUID -Unterschied zwischen Windows und Android
Posted: 05 Feb 2025, 03:52
Ich versuche, eine Bluetooth -Kommunikation zwischen einer Webseite und ESP32 aufzubauen. Ich habe eine einfache Webseite anhand eines Beispiels erstellt, das ich online gefunden habe, und sie funktioniert in Chrome aus meinem Windows-basierten Laptop. Es verbindet sich mit ESP32 und kann Ble Service und Eigenschaften lesen und schreiben. Die gleiche Webseite funktioniert jedoch nicht in Chrome auf einem Android -Telefon. Es kann keine Verbindung zu den BLE -Diensten herstellen. Ich habe die NRF Connect -App verwendet, die verfügbaren BLE -Dienste gescannt und festgestellt, dass alle Guids am Telefon anders aussehen und nicht mit denjenigen übereinstimmen, die ich auf ESP32 verwendet habe. Nachdem die Guids auf diese geändert wurden, verband es sich erfolgreich. Kann jemand erklären, warum BLE -Service -IDs von einem Windows -Gerät (Laptop) und vom Telefon anders aussehen? Ich möchte eine einzelne Web -App haben, die auf beiden Geräten verwendet werden kann. < /P>
Beispiel: < /p>
Beispiel: < /p>
Code: Select all
var bleService = 'd65d0396-0000-4381-9985-653653ce831f'; //works on Windows
var bleService = '6ba1b218-15a8-461f-9fa8-5dcae273eafd'; //works on Android (same service!)
< /code>
Auszug des auf der Webseite verwendeten Codes: < /p>
function connectToDevice(){
log('Initializing Bluetooth...');
statusContainer.innerHTML = 'Initializing Bluetooth...';
navigator.bluetooth.requestDevice({
filters: [{name: deviceName}]
,optionalServices: [bleService]
})
.then(device => {
log('Device Selected:', device.name);
bleStateContainer.innerHTML = 'Connected to device ' + device.name;
bleStateContainer.style.color = "#24af37";
device.addEventListener('gattservicedisconnected', onDisconnected);
return device.gatt.connect();
})
.then(gattServer =>{
bleServer = gattServer;
log("Connected to GATT Server");
statusContainer.innerHTML = 'Connected to GATT Server';
return bleServer.getPrimaryService(bleService);
})