Central: 読み書き

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

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

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

書き込み

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

var obniz = new Obniz("OBNIZ_ID_HERE");
obniz.onconnect = async function () {
  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() を利用します。書き込んだのが文字列や数値だったとしてもバイト列として返ってきます。

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");
    var connected = await peripheral.connectWait();
    if(connected){
      console.log("connected");
      var service = peripheral.getService("1111");
      var char = service.getCharacteristic("2222");
      var data = await char.readWait();
      console.log(data); // => ex [0x02, 0xFF]; 
    }else{
      console.log("failed");
    }
  }
}