蓝牙API 调用发送接口发送的信息不完整
发布于 5 年前 作者 aduan 7412 次浏览 来自 问答

在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提供接口:

  1. 获取能够发送数据量的最大值

  2. 如果发送超过了最大的数据量,请返回错误信息提示

  3. 能够通过API一次性发送200个字节!!!

回到顶部