//向低功耗蓝牙设备特征值中写入二进制数据
//特征值支持是 write
//方法回调 {"errMsg":"writeBLECharacteristicValue:ok"}
//打印机无反应
是BUG吗?
var testString = '010101';
const buffer = new ArrayBuffer(testString.length);
const dataView = new DataView(buffer);
for (var i = 0; i < testString.length; i++) {
dataView.setUint8(i,testString[i]);
}
uni.writeBLECharacteristicValue({
// 这里的 deviceId 需要在 getBluetoothDevices 或 onBluetoothDeviceFound 接口中获取
deviceId,
// 这里的 serviceId 需要在 getBLEDeviceServices 接口中获取
serviceId,
// 这里的 characteristicId 需要在 getBLEDeviceCharacteristics 接口中获取
characteristicId,
// 这里的value是ArrayBuffer类型
value: buffer,
success(res) {
console.log(JSON.stringify(res))
},
fail(res) {
console.log(JSON.stringify(res))
}
})
太2真人
我也是。你搞定了 没
2019-11-26 14:25
小了个白
回复 太2真人: 你好,我这边现在可以了,之前是不行的原因是因为特征值的问题,特征值写入跟特征值 notify 或者 indicate 同时为true时,我这边就可以收到数据,而且,在这个uni.onBLECharacteristicValueChange()方法中获取返回值时,你需要把返回的ArrayBuffer类型转换才能看到
2019-11-26 16:30
太2真人
回复 小了个白:
17:59:52.489 {"uuid":"00001001-0000-1000-8000-00805F9B34FB","properties":{"read":true,"write":false,"notify":false,"indicate":false}} at js/common.js:139
17:59:52.509 {"uuid":"00001002-0000-1000-8000-00805F9B34FB","properties":{"read":false,"write":false,"notify":true,"indicate":false}} at js/common.js:139
17:59:52.529 {"uuid":"00001003-0000-1000-8000-00805F9B34FB","properties":{"read":false,"write":true,"notify":false,"indicate":false}} at js/common.js:139
17:59:52.549 {"uuid":"00001004-0000-1000-8000-00805F9B34FB","properties":{"read":true,"write":false,"notify":false,"indicate":false}} at js/common.js:139
17:59:52.569 {"uuid":"00001005-0000-1000-8000-00805F9B34FB","properties":{"read":true,"write":true,"notify":false,"indicate":false}}
哥。我只能接收到一个字符。不知道什么原因。
2019-11-26 18:01
小了个白
回复 太2真人: 这个我也不太清除,你只能排查看看,问问你们硬件,蓝牙返回的数据为什么,然后网上有很多可以将buffer类型转换为16进制字符串的函数方法,你就试试看吧,不行你就加我qq(1752851362),然后在探讨一下
/*
*/
ab2hex(buffer) {
const hexArr = Array.prototype.map.call(
new Uint8Array(buffer),
function(bit) {
return ('00' + bit.toString(16)).slice(-2)
}
)
return hexArr.join('')
}
2019-11-27 10:22