用官方的hello例子
许香香
- 发布:2020-05-25 09:54
- 更新:2020-06-30 11:46
- 阅读:1988
是更新后才出现的问题吗?之前是否正常?
试试直接使用5+的接口监听:http://www.html5plus.org/doc/zh_cn/bluetooth.html#plus.bluetooth.onBLECharacteristicValueChange
许香香 (作者) - 95后前端
// 读取机器2进制事件, 读取后订阅,订阅后监听
readBLECharacteristicValue() {
const deviceId = uni.getStorageSync('deviceId')
const serviceId = uni.getStorageSync('serviceId')
const characteristicId = uni.getStorageSync('characteristicId')
console.log(deviceId);
console.log(serviceId);
console.log(characteristicId);
uni.readBLECharacteristicValue({
// 这里的 deviceId 需要已经通过 createBLEConnection 与对应设备建立链接
deviceId,
// 这里的 serviceId 需要在 getBLEDeviceServices 接口中获取
serviceId,
// 这里的 characteristicId 需要在 getBLEDeviceCharacteristics 接口中获取
characteristicId,
success: res => {
console.log('读取设备数据值成功');
console.log(JSON.stringify(res));
this.notifyBLECharacteristicValueChange(); //读之后调用这个,调用完了跳转新页面,之后才是写功能
},
fail(e) {
console.log('读取设备数据值失败,错误码:' + e.errCode);
if (e.errCode !== 0) {
initTypes(e.errCode);
}
}
});
// this.onBLECharacteristicValueChange();
},
/**
* 订阅操作成功后需要设备主动更新特征值的 value,才会触发 uni.onBLECharacteristicValueChange 回调。
*/
notifyBLECharacteristicValueChange() {
const deviceId = uni.getStorageSync('deviceId')
const serviceId = uni.getStorageSync('serviceId')
const characteristicId = uni.getStorageSync('characteristicId')
// let notify = this.characteristicsData[0].properties.notify;
console.log(deviceId);
console.log(serviceId);
console.log(characteristicId);
// console.log(notify);
//new
plus.bluetooth.notifyBLECharacteristicValueChange({
deviceId,
serviceId,
characteristicId,
success:function(e){
console.log('uni.notifyBLECharacteristicValueChange - res : ', JSON.stringify(e));
function ab2hex(buffer) {
const hexArr = Array.prototype.map.call(
new Uint8Array(buffer),
function(bit) {
return ('00' + bit.toString(16)).slice(-2)
}
)
return hexArr.join('')
}
plus.bluetooth.onBLECharacteristicValueChange(function(e){
console.log('onBLECharacteristicValueChange: '+JSON.stringify(e));
console.log(`characteristic ${e.characteristicId} has changed, now is ${JSON.stringify(e.value)}`)
var value = ab2hex(e.value);
console.log('value(hex) = '+value);
if(characteristicId == e.characteristicId){
// 更新到页面显示
alert('特征值变化: '+value);
}
});
},
fail:function(e){
console.log('get characteristics failed: '+JSON.stringify(e));
}
});
},
许香香 (作者)
之前没用过。刚刚我换了低版本的hbuilderx(2.6.1),运行官方hello-uniapp,value依旧为空,00000000000000000(约20个0),
2020-05-25 15:14
DCloud_UNI_GSQ
回复 许香香: 试试直接使用5+的接口监听:http://www.html5plus.org/doc/zh_cn/bluetooth.html#plus.bluetooth.onBLECharacteristicValueChange
2020-05-25 15:56
许香香 (作者)
回复 DCloud_UNI_GSQ: 确实出现了特征值,特征值是:595958000000000000000000ffffffff,而且特征值不管怎么变化都是595958000000000000000000ffffffff
2020-05-26 11:32
DCloud_UNI_GSQ
回复 许香香: 你是说使用 plus.bluetooth.onBLECharacteristicValueChange 也有问题是吗?
2020-05-26 14:13
许香香 (作者)
回复 DCloud_UNI_GSQ: 是的,我只单独使用了他
2020-05-26 15:12
许香香 (作者)
回复 DCloud_UNI_GSQ: 代码写在下面了
2020-05-26 15:25
许香香 (作者)
回复 DCloud_UNI_GSQ: 刚刚把所有的都使用了,h5+app写入uniapp里面,然后就都是00000000000000000000了, plus.bluetooth.notifyBLECharacteristicValueChange就不给回调了于是又改成uni.notifyBLECharacteristicValueChange,然后就是0000000000000了
2020-05-27 09:49