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 微信小程序蓝牙 微信小程序热敏打印机相关推荐

  1. 微信小程序 - 蓝牙BLE小程序开发

    1.前言 最近领导看我比较闲,安排我开发一个蓝牙BLE微信小程序,刚开始接到这个项目时,我第一反应时,"卧槽"".老子在公司的岗位是做Windows和Android 软件 ...

  2. 微信小程序 蓝牙的使用

    1 一般使用蓝牙功能肯定是想连接某一个蓝牙设备,所以需要知道这个蓝牙设备的名称,一般来说都是扫描二维码连接,那么当你扫描这个设备二维码的时候,就需要去初始化你手机上的蓝牙模块了 /*** 初始化蓝牙设 ...

  3. 微信小程序蓝牙BLE开发实战——案例(二)

    微信小程序蓝牙BLE开发实战(二) 上篇主要介绍在开发过程中应用到相关API操作.接下来介绍个人在项目开发中应用蓝牙BLE一些事情. 由于时间比较仓促, 有些注释没那么详细.请理解~写的不好欢迎各位大 ...

  4. 微信小程序蓝牙功能开发与问题记录

    一.蓝牙支持情况 1. 微信小程序对蓝牙的支持情况 目前普遍使用的蓝牙规格:经典蓝牙和蓝牙低功耗. 经典蓝牙(蓝牙基础率/增强数据率):常用在对数据传输带宽有一定要求的大数据量传输场景上,比如需要传输 ...

  5. 微信小程序蓝牙使用总结

    微信小程序获取蓝牙流程 注意点: wx.openBluetoothAdapter(Object object):初始化蓝牙模块. 其他蓝牙相关 API 必须在 wx.openBluetoothAdap ...

  6. 微信小程序蓝牙模块通信

    微信小程序与蓝牙之间的通信 因为项目要求,本次实现与蓝牙的通信是直接根据蓝牙设备的deviceId直接进行连接,后续会继续改进.实现的功能有连接蓝牙,获取蓝牙的服务,特征值,关闭蓝牙搜索,开启noti ...

  7. 泰凌微ble mesh蓝牙模组天猫精灵学习之旅 ② 如何实现 微信小程序蓝牙控制 Ble Mesh模组 安信可TB02,全部开源!

    本<泰凌微ble mesh蓝牙模组天猫精灵学习之旅>系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1.小 ...

  8. 微信小程序蓝牙连接打印机

    需求:蓝牙搜索打印机并打印信息 微信小程序中需要打印订单信息 1.搜索打印机蓝牙,并链接 2.发送打印 微信小程序连接蓝牙 1.初始化蓝牙 1.1 wx.openBluetoothAdapter(Ob ...

  9. 微信小程序蓝牙连接步骤

    微信小程序蓝牙连接步骤  注意,微信小程序的低功耗蓝牙,获取附近蓝牙时,ios和android获取的deviceid 是不一样的.android获取的是mac地址,ios获取的是经过内部转换加密过的. ...

最新文章

  1. 网元查看一个无厘头的core dump问题定位
  2. s3c6410_u-boot-2010.03移植
  3. Shell笔记9——Shell数组的应用实践
  4. 采用TCPListener/TCPClient实现图片传输
  5. mysqlfor循环中出错继续_运维大佬教你“打僵尸”——处理Linux系统中大量的僵尸进程(2)...
  6. mysql5权威指南_MySQL5权威指南(第3版)
  7. 服务器控件的 ID, ClientID 和 UniqueID 属性
  8. Soul网关源码阅读番外篇(一) HTTP参数请求错误
  9. CSS 常用中文字体的英文名称
  10. 标记偏置 隐马尔科夫 最大熵马尔科夫 HMM MEMM
  11. faster rcnn论文_论文导读-从Faster-RCNN/Mask RCNN/Cascade-RCNN到HTC
  12. php foeeach页面输出,PHP数组foreach遍历输出例子详解
  13. forum.php 下载,PHPWind Forums
  14. 百度个性化瓦片地图下载
  15. Python全栈开发教程笔记
  16. Spring Boot打包成执行jar后获取classpath下文件异常解决
  17. 在移动设备上使用M3G编程教程(转)
  18. 【2017今日头条】头条校招(JAVA)
  19. Android 内容复制到剪贴板
  20. 如果你是一个Java面试官,你会问哪些问题?

热门文章

  1. Scrapy网络爬虫框架实际案例讲解,Python爬虫原来如此简单!
  2. CVPR 2020 Oral |目标检测+分割均实现SOTA!厦大提出协同学习网络
  3. ARM全新Armv9架构:10年最大更新、增强AI和security能力
  4. 基于RANSAC的激光点云分割
  5. Numpy基础知识点汇总
  6. 深度学习(三十)贪婪深度字典学习
  7. php到期自动过期,PHP实现页面长时间无操作,自动过期函数
  8. 用python写helloworld_Python基于Tkinter的HelloWorld入门实例
  9. python深拷贝_python 深拷贝与浅拷贝的区别
  10. JVM 内存监控 (1.8)