characteristicは値を持っており、属性によってはBLE経由での読み書きが許可されています。
characteristic.propertiesに属性が含まれており、何が許可されているのかが分かります。canWrite()関数などでその属性が含まれているかを調べることも可能です。
// Javascript Example
console.log(characteristics.properties); // => ['read', 'write', 'notify']
characteristics.canWrite(); // => true
書き込み
読み書きの関数は以下が使えます
- writeWait(number array) データ配列を書き込みます
- writeNumberWait(number) 数字を受け取りデータ配列として書き込みます
- writeTextWait() 文字列をUTF8エンコードしデータ配列として書き込みます
- readWait() データを配列で読み取ります
// 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");
}
}
}