Ionic Bluetooth BLE始终读取消息

时间:2018-05-04 20:46:30

标签: ionic-framework bluetooth bluetooth-lowenergy sensor

我想一直通过蓝牙从传感器读取数据。我从文档中得知,但我无法通过蓝牙设置我的手机从传感器读取数据。首先我将移动设备与传感器连接,然后通过以下方式添加通知:

 this.ble.startNotification(peripheral.id,SERVICE_UUID,
                                CHARACTERISTIC_UUID).subscribe(
      data => {this.onChange(data);}
    )

其中onChane(数据)是:

 onChange(buffer :ArrayBuffer){
    console.log("onChange method")
    var data = new Float32Array(buffer);
    console.log(data[0]);   }

接下来我

this.ble.read(peripheral.id,SERVICE_UUID,CHARACTERISTIC_UUID).then(
      (data) => {this.onChange(data);},
      (err) => {console.log(err);}
    )

我在this.ble.read中失败了。 CHARACTERISTIC_UUID和SERVICE_UUID是const。怎么了?如何更正我的手机始终收到数据?

1 个答案:

答案 0 :(得分:2)

如果您正在使用通知,则无需读取特征值。订阅通知后,只要值发生变化,外围设备就会通过新值通知您。看起来你的onChange函数可以做到这一点。

如果您的特性支持read属性,则可以选择读取该值。查看返回连接成功回调的peripheral data以查看特征属性。

看一下我的Ionic BLE example codethermometer example连接到外围设备,订阅通知,并读取一次值,因此IU可以使用当前值更新UI。见https://github.com/don/ionic-ble-examples/blob/d0acd2b47ea08011be4d1aa844c4f74426a22273/thermometer/src/pages/detail/detail.ts#L37-L55