wx.getBLEDeviceCharacteristics 微信小程序蓝牙 微信小程序热敏打印机
Posted 早起的年轻人
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了wx.getBLEDeviceCharacteristics 微信小程序蓝牙 微信小程序热敏打印机相关的知识,希望对你有一定的参考价值。
1 微信小程序蓝牙功能开发概述
- 第一步 判断当前微信版本,是否支持蓝牙 通信
- 第二步 打开蓝牙
- 第三步扫描设备
- 第四步连接设备
- 第五步 获取服务与特征值 看是否支持读写数据操作
- 第六步 发送数据
本文章 是记录的第五步中的内容点
2 wx.getBLEDeviceCharacteristics
wx.getBLEDeviceCharacteristics 用来获取
获取蓝牙设备某个服务中所有特征值(characteristic)
关键核心代码如下
2.1 获取连接蓝牙的所支持的服务
我这一步是已经扫描到了可用的蓝牙设备,获取到其中的一个设备的 deviceId,callBack是我设置的一个回调函数
//获取蓝牙设备所有服务(service)
function getBLEDeviceServices(deviceId, callBack)
console.log("连接低功耗蓝牙设备成功 开始获取蓝牙服务"+deviceId)
wx.getBLEDeviceServices(
deviceId,
success: (res) =>
console.log("连接低功耗蓝牙设备成功 获取蓝牙服务成功"+deviceId)
console.log("getBLEDeviceServices success")
for (let i = 0; i < res.services.length; i++)
if (res.services[i].isPrimary)
getBLEDeviceCharacteristics(deviceId, res.services[i].uuid, callBack)
,
fail: (res) =>
console.log("连接低功耗蓝牙设备成功 获取蓝牙服务失败"+deviceId)
console.log("getBLEDeviceServices fail")
console.log("获取蓝牙服务失败:" + JSON.stringify(res))
)
微信官方文档这里有有问题的,我的实践是在部分安卓手机有,是有多个服务在可用状态,如果这里return 回去了,会导致下一步中判断不可输出数据问题,实际上是可以输出的
2.2 获取特征值关键核心代码
需要根据蓝牙设备的 deviceId 与 serviceId 服务ID来获取特征值,如是否支持读取蓝牙设备的数据或者是否支持向蓝牙设备中写数据,都是通过特征值来判断的
在部分安卓手机中,可能会有多个 可用服务,也就是多个 serviceId,每个serviceId中提供的特征值不一样,需要组合起来使用
function getBLEDeviceCharacteristics(deviceId, serviceId, callBack)
wx.getBLEDeviceCharacteristics(
deviceId,
serviceId,
success: (res) =>
console.log('getBLEDeviceCharacteristics success', res.characteristics)
for (let i = 0; i < res.characteristics.length; i++)
let item = res.characteristics[i]
console.log("characteristics "+gloableBlueName+" read "+item.properties.read)
console.log("characteristics "+gloableBlueName+" write "+item.properties.write)
console.log("characteristics "+gloableBlueName+" notify "+item.properties.notify)
console.log("characteristics "+gloableBlueName+" indicate "+item.properties.indicate)
if (item.properties.read)
//可读数据
wx.readBLECharacteristicValue(
deviceId,
serviceId,
characteristicId: item.uuid,
)
if (item.properties.write)
// 可写数据
,
fail(res)
console.error('获取特征值失败:', res)
,
complete()
if (callBack)
console.log('回调 canWrite '+canWrite.toString());
//我这里主要是用到了可写数据操作
callBack(canWrite);
)
以上是关于wx.getBLEDeviceCharacteristics 微信小程序蓝牙 微信小程序热敏打印机的主要内容,如果未能解决你的问题,请参考以下文章