Я пробовал различные настройки для подключения к своему микробиту через веб-Bluetooth, но это не сработало.
Прежде всего, я могу успешно выполнить сопряжение как на Mac / Chrome, так и на iOS / nRF.,Из того, что я понимаю, вы должны спариться с микробитом вначале (переведите микробит в режим сопряжения со сбросом + b +, затем отпустите сброс, удерживая + b).В этом режиме я могу подключиться как к Mac / Chrome, так и к iOS / nRF.
Однако в этом режиме ни одна из служб, которые я настроил в своем коде (я пробовал и блоки makecode, и mbedкод c ++) видны из iOS / nRF Connect.Мой javascript-код в chrome просто падает с тупым «DOMException» без какой-либо информации.
Итак, я понял, что вы должны настроить пару раз, затем сбросить микробит и восстановить соединение с кодом, который вына самом деле написал (не кусок кода, который работает в режиме сопряжения).
К сожалению, я не могу подключиться за пределами режима сопряжения.В iOS / nRF connect устройство серое, connect ждет вечно.В mac / chrome диалог выбора устройства долгое время остается пустым.После этого я могу внезапно выбрать микробит, но код не подключается.
Так как мне подключиться к устройству, если оно не находится в режиме сопряжения?Или должен ли режим сопряжения запускать мою программу после успешного сопряжения, чего не происходит?
Я использовал эту программу https://makecode.microbit.org/v0/51291-94272-66943-05638, с которой связана ссылка: https://support.microbit.org/support/solutions/articles/19000026073-how-to-re-instate-bluetooth-after-previously-using-micropython. Нони одна из моих собственных программ тоже не работает.
Код JavaScript, который я пытался запустить в mac / chrome, таков:
<html>
<head>
<script>
const buttonService = 'E95D9882-251D-470A-A062-FA1922DFA9A8'.toLowerCase();
const eventService = 'e95d93af-251d-470a-a062-fa1922dfa9a8';
const buttonACharacteristic = 'E95DDA90-251D-470A-A062-FA1922DFA9A8'.toLowerCase();
function scanBluetooth() {
navigator.bluetooth.requestDevice({
// acceptAllDevices: true,
filters: [{
name: 'BBC micro:bit [zazet]'
}],
// optionalServices: ['battery_service']
optionalServices: [buttonService]
// optionalServices: [eventService]
})
.then(device => {
console.log(device);
return device.gatt.connect();
})
.then(server => {
console.log("server");
console.log(server);
return server.getPrimaryService(buttonService);
// return server.getPrimaryService(eventService);
// return server.getPrimaryServices();
})
.then(service => {
console.log("service");
console.log(service);
// return service.getCharacteristic('E95DDA90-251D-470A-A062-FA1922DFA9A8'.toLowerCase());
return service.getCharacteristic(buttonACharacteristic);
})
.then(characteristic => {
console.log('characteristic');
setInterval(() => {
characteristic.readValue()
.then(value => console.log('value', value))
}, 500);
})
.catch(error => { console.log(error); });
}
</script>
</head>
<body>
</body>
</html>
Редактировать: Обнаружен обходной путь
Хорошо, так как сопряжение не работает, я попытался полностью отключить сопряжение (настройки в интерфейсе makecode, также проверьте https://support.microbit.org/support/solutions/articles/19000080745-what-are-the-different-bluetooth-pairing-modes-).
Результат: мой веб-код Bluetooth просто работает.
Остается вопрос: как это должно работать с включенным сопряжением? Когда ваш код должен работать, если режим сопряжения не выходит?
О, и я полагаю, что я никогда не задавал здесь вопрос;пожалуйста, перейдите на support.microbit.org.