在Android设备上运行小程序,Android版本7.0,微信版本6.6.7,基础库版本2.1.2 [141],代码片段如下:
// 向蓝牙设备分20次发送数据,每次发送150个字节,一共发送3000字节
for(let i = 0; i < 20; i++){
let buffer = new ArrayBuffer(150)
let dataView = new DataView(buffer)
dataView.setUint32(0, 0x12345678)
dataView.setUint32(146, 0xfedcba98)
wx.writeBLECharacteristicValue({
deviceId: this._deviceId, //已正确获取
serviceId: this._serviceId, //已正确获取
characteristicId: this._characteristicId, //已正确获取
value: buffer
})
}
程序可以运行,并且能够返回成功,实际代码已实现success回调,并能够返回成功信息
Android设备打开开发者模式,获取蓝牙HCI日志如下:
可见,代码实际发送150个字节的数据,但是蓝牙log显示,实际只发送了20个字节的数据
如上现象,是API的限制还是API的Bug,请麻烦说明。
最好的结果是请API提供接口:
获取能够发送数据量的最大值
如果发送超过了最大的数据量,请返回错误信息提示
能够通过API一次性发送200个字节!!!