wx.getBLEDeviceCharacteristics 微信小程序蓝牙 微信小程序热敏打印机

 2023-09-10 阅读 20 评论 0

摘要:1 微信小程序蓝牙功能开发概述 第一步 判断当前微信版本,是否支持蓝牙 通信第二步 打开蓝牙第三步扫描设备第四步连接设备第五步 获取服务与特征值 看是否支持读写数据操作第六步 发送数据 本文章 是记录的第五步中的内容点 2 wx.getBLEDeviceCharacteristics wx.getBL
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);}}})

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/35056.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息