收藏本站
查看: 101|回复: 0

蓝牙适配器接口参数及实例源码5

[复制链接]
发表于 2018-2-8 09:38:51 | 显示全部楼层 |阅读模式
wx.getBLEDeviceCharacteristics(OBJECT)
基础库 1.1.0 开始支持,低版本需做兼容处理
获取蓝牙设备某个服务中的所有 characteristic(特征值)
OBJECT参数说明:
参数
类型
必填
说明

deviceIdString是蓝牙设备 id,参考 device 对象
serviceIdString是蓝牙服务 uuid
successFunction是成功则返回本机蓝牙适配器状态
failFunction否接口调用失败的回调函数
completeFunction否接口调用结束的回调函数(调用成功、失败都会执行)
success返回参数:
参数
类型
说明

characteristicsArray设备特征值列表
errMsgString成功:ok,错误:详细信息characteristic对象
蓝牙设备characteristic(特征值)信息
参数
类型
说明

uuidString蓝牙设备特征值的 uuid
propertiesObject该特征值支持的操作类型properties对象
参数
类型
说明

readBoolean该特征值是否支持 read 操作
writeBoolean该特征值是否支持 write 操作
notifyBoolean该特征值是否支持 notify 操作
indicateBoolean该特征值是否支持 indicate 操作
示例代码:
  1. wx.getBLEDeviceCharacteristics({
  2.   // 这里的 deviceId 需要已经通过 createBLEConnection 与对应设备建立链接
  3.   deviceId: deviceId,
  4.   // 这里的 serviceId 需要在上面的 getBLEDeviceServices 接口中获取
  5.   serviceId: serviceId,
  6.   success: function (res) {
  7.     console.log('device getBLEDeviceCharacteristics:', res.characteristics)
  8.   }
  9. })
复制代码
Bug & Tip
  • tip:传入的serviceId需要在getBLEDeviceServices获取到
  • tip:iOS平台上后续对特征值的read、write、notify,由于系统需要获取特征值实例,传入的 serviceId 与 characteristicId 必须由 getBLEDeviceServices 与 getBLEDeviceCharacteristics 中获取到后才能使用。建议双平台统一在建立链接后先执行 getBLEDeviceServices 与 getBLEDeviceCharacteristics 后再进行与蓝牙设备的数据交互
wx.readBLECharacteristicValue(OBJECT)
基础库 1.1.0 开始支持,低版本需做兼容处理
读取低功耗蓝牙设备的特征值的二进制数据值。注意:必须设备的特征值支持read才可以成功调用,具体参照 characteristic 的 properties 属性
OBJECT参数说明:
参数
类型
必填
说明

deviceIdString是蓝牙设备 id,参考 device 对象
serviceIdString是蓝牙特征值对应服务的 uuid
characteristicIdString是蓝牙特征值的 uuid
successFunction是成功则返回本机蓝牙适配器状态
failFunction否接口调用失败的回调函数
completeFunction否接口调用结束的回调函数(调用成功、失败都会执行)
success返回参数:
参数
类型
说明

errCodeNumber错误码
errMsgString成功:ok,错误:详细信息
示例代码:
  1. // 必须在这里的回调才能获取
  2. wx.onBLECharacteristicValueChange(function(characteristic) {
  3.   console.log('characteristic value comed:', characteristic)
  4. })

  5. wx.readBLECharacteristicValue({
  6.   // 这里的 deviceId 需要已经通过 createBLEConnection 与对应设备建立链接  [**new**]
  7.   deviceId: deviceId,
  8.   // 这里的 serviceId 需要在上面的 getBLEDeviceServices 接口中获取
  9.   serviceId: serviceId,
  10.   // 这里的 characteristicId 需要在上面的 getBLEDeviceCharacteristics 接口中获取
  11.   characteristicId: characteristicId,
  12.   success: function (res) {
  13.     console.log('readBLECharacteristicValue:', res.errCode)
  14.   }
  15. })
复制代码
Bug & Tip
  • tip: 并行调用多次读写接口存在读写失败的可能性。
  • tip: read接口读取到的信息需要在onBLECharacteristicValueChange方法注册的回调中获取。
wx.writeBLECharacteristicValue(OBJECT)
基础库 1.1.0 开始支持,低版本需做兼容处理
向低功耗蓝牙设备特征值中写入二进制数据。注意:必须设备的特征值支持write才可以成功调用,具体参照 characteristic 的 properties 属性
tips: 并行调用多次读写接口存在读写失败的可能性
OBJECT参数说明:
参数
类型
必填
说明

deviceIdString是蓝牙设备 id,参考 device 对象
serviceIdString是蓝牙特征值对应服务的 uuid
characteristicIdString是蓝牙特征值的 uuid
valueArrayBuffer是蓝牙设备特征值对应的二进制值
successFunction是成功则返回本机蓝牙适配器状态
failFunction否接口调用失败的回调函数
completeFunction否接口调用结束的回调函数(调用成功、失败都会执行)
success返回参数:
参数
类型
说明

errMsgString成功:ok,错误:详细信息
示例代码:
  1. // 向蓝牙设备发送一个0x00的16进制数据
  2. let buffer = new ArrayBuffer(1)
  3. let dataView = new DataView(buffer)
  4. dataView.setUint8(0, 0)

  5. wx.writeBLECharacteristicValue({
  6.   // 这里的 deviceId 需要在上面的 getBluetoothDevices 或 onBluetoothDeviceFound 接口中获取
  7.   deviceId: deviceId,
  8.   // 这里的 serviceId 需要在上面的 getBLEDeviceServices 接口中获取
  9.   serviceId: serviceId,
  10.   // 这里的 characteristicId 需要在上面的 getBLEDeviceCharacteristics 接口中获取
  11.   characteristicId: characteristicId,
  12.   // 这里的value是ArrayBuffer类型
  13.   value: buffer,
  14.   success: function (res) {
  15.     console.log('writeBLECharacteristicValue success', res.errMsg)
  16.   }
  17. })
复制代码
Bug & Tip
  • tip: 并行调用多次读写接口存在读写失败的可能性。
  • tip: 小程序不会对写入数据包大小做限制,但系统与蓝牙设备会确定蓝牙4.0单次传输的数据大小,超过最大字节数后会发生写入错误,建议每次写入不超过20字节。
  • tip: 安卓平台上,在调用notify成功后立即调用write接口,在部分机型上会发生 10008 系统错误
  • bug: 若单次写入数据过长,iOS平台上存在系统不会有任何回调的情况(包括错误回调)。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表