ブラウザでお手軽BLEをするのに、BlueJellyがすごく便利なんだが、Peripheral化させたラズパイ(Node.js + bleno)とデータのやり取りする時に、Byte Arrayとかなんとかメンドクサイのが出て来て訳が分からんので、とりあえず簡単に使う方法を整理。
- ●データを受ける(Read)
-
Peripheral側から飛んできたデータはArray Bufferになってるので、文字列に戻す
//Bluejelly イベント ble.onRead = function (data, uuid){ let xVal = buffToString(data.buffer); console.log(xVal); } /*ArrayBufferから値を読んで文字列に変換*/ const buffToString = function(xBuffer) { let xArrayBuffer = new Uint8Array(xBuffer); let xRes = String.fromCharCode.apply(null,xArrayBuffer); return xRes; }
- ●データを送る(Write)
-
Peripheralにデータを送るには文字列をArrayBufferにして、送る。
let xSendVal = "送信データ"; //文字列をArrayBufferに変換 let arrayBuffe = new TextEncoder().encode(xSendVal); ble.write('UUID名',arrayBuffe);
- ●Node.js側でWriteされたデータを文字列に戻す
-
//xVal = writeされたデータ let xVal = Buffer.from(Uint8Array.from(Buffer.from(data))).toString();