Central: 読み書き

characteristicは値を持っており、属性によってはBLE経由での読み書きが許可されています。

characteristic.propertiesに属性が含まれており、何が許可されているのかが分かります。canWrite()関数などでその属性が含まれているかを調べることも可能です。

// Javascript Example

console.log(characteristics.properties); // => ['read', 'write', 'notify']
characteristics.canWrite(); // => true

書き込み

読み書きの関数は以下が使えます

// Javascript Full Example

await obniz.ble.initWait(); 

var target = {
    uuids: ["fff0"],
};
var peripheral = await obniz.ble.scan.startOneWait(target);
if(peripheral){
    await peripheral.connectWait();

    console.log("connected");
    await obniz.wait(1000);

    var dataArray = [0x02, 0xFF];
    await peripheral.getService("FF00").getCharacteristic("FF01").writeWait(dataArray);
    console.log("write success");
}

読み取り

characteristicの値の読み込みにはreadWait() を利用します。書き込んだのが文字列や数値だったとしてもバイト列として返ってきます。

// Javascript Full Example

var obniz = new Obniz("OBNIZ_ID_HERE");
obniz.onconnect = async function () {
  await obniz.ble.initWait();
  var peripheral = await obniz.ble.scan.startOneWait({ localName: "Blank" });
  if(peripheral) {
    console.log("found");
    try{
      await peripheral.connectWait();
      console.log("connected");
      var service = peripheral.getService("1111");
      var char = service.getCharacteristic("2222");
      var data = await char.readWait();
      console.log(data); // => ex [0x02, 0xFF]; 
    }catch(e){
      console.log("connection failed");
    }
  }
}