<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>BLE UART write</title> </head> <body> <h1>BLE UART write</h1> <p>Micro:bitに接続完了後、メッセージを送信してください。LEDにメッセージを表示します。</p> <hr> <p><button type="button" id="connect">接続</button> <span id="msg"></span></p> <p><input id="send_text" value="hello"> <button type="button" id="send" disabled>送信</button></p> <script> const UUID_1 = '6e400001-b5a3-f393-e0a9-e50e24dcca9e'; const UUID_2 = '6e400003-b5a3-f393-e0a9-e50e24dcca9e'; // Notify var bluetoothDevice; var characteristic; //Micro:bitに接続する document.getElementById('connect').addEventListener('click', function(e){ if (document.getElementById('connect').textContent == '接続') { navigator.bluetooth.requestDevice({ filters:[{namePrefix: 'BBC micro:bit'}],optionalServices: [UUID_1] }) .then(device => { bluetoothDevice = device ; return device.gatt.connect(); }) .then(server =>{ return server.getPrimaryService(UUID_1); }) .then(service => { return service.getCharacteristic(UUID_2) }) .then(chara => { update(true) ; characteristic = chara; }) .catch(error => { msg.innerHTML = (error) ; }); //BEL切断処理 } else { bluetoothDevice.gatt.disconnect() ; update(false) ; } }) function sendMessage() { if (!bluetoothDevice || !bluetoothDevice.gatt.connected || !characteristic) return ; var text = data.value + "\n" ; var arrayBuffe = new TextEncoder().encode(text); characteristic.writeValue(arrayBuffe); } send.addEventListener('click', function(e) { characteristic.writeValue(new TextEncoder().encode(send_text.value + '\n')) }) function update(connected) { connect.textContent = connected ? '切断' : '接続' msg.innerHTML = connected ? 'BLE connected' : 'BLE disconnected' send.disabled = !connected ; } </script> </body> </html>