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 微信小程序蓝牙 微信小程序热敏打印机相关推荐
- 微信小程序 - 蓝牙BLE小程序开发
1.前言 最近领导看我比较闲,安排我开发一个蓝牙BLE微信小程序,刚开始接到这个项目时,我第一反应时,"卧槽"".老子在公司的岗位是做Windows和Android 软件 ...
- 微信小程序 蓝牙的使用
1 一般使用蓝牙功能肯定是想连接某一个蓝牙设备,所以需要知道这个蓝牙设备的名称,一般来说都是扫描二维码连接,那么当你扫描这个设备二维码的时候,就需要去初始化你手机上的蓝牙模块了 /*** 初始化蓝牙设 ...
- 微信小程序蓝牙BLE开发实战——案例(二)
微信小程序蓝牙BLE开发实战(二) 上篇主要介绍在开发过程中应用到相关API操作.接下来介绍个人在项目开发中应用蓝牙BLE一些事情. 由于时间比较仓促, 有些注释没那么详细.请理解~写的不好欢迎各位大 ...
- 微信小程序蓝牙功能开发与问题记录
一.蓝牙支持情况 1. 微信小程序对蓝牙的支持情况 目前普遍使用的蓝牙规格:经典蓝牙和蓝牙低功耗. 经典蓝牙(蓝牙基础率/增强数据率):常用在对数据传输带宽有一定要求的大数据量传输场景上,比如需要传输 ...
- 微信小程序蓝牙使用总结
微信小程序获取蓝牙流程 注意点: wx.openBluetoothAdapter(Object object):初始化蓝牙模块. 其他蓝牙相关 API 必须在 wx.openBluetoothAdap ...
- 微信小程序蓝牙模块通信
微信小程序与蓝牙之间的通信 因为项目要求,本次实现与蓝牙的通信是直接根据蓝牙设备的deviceId直接进行连接,后续会继续改进.实现的功能有连接蓝牙,获取蓝牙的服务,特征值,关闭蓝牙搜索,开启noti ...
- 泰凌微ble mesh蓝牙模组天猫精灵学习之旅 ② 如何实现 微信小程序蓝牙控制 Ble Mesh模组 安信可TB02,全部开源!
本<泰凌微ble mesh蓝牙模组天猫精灵学习之旅>系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1.小 ...
- 微信小程序蓝牙连接打印机
需求:蓝牙搜索打印机并打印信息 微信小程序中需要打印订单信息 1.搜索打印机蓝牙,并链接 2.发送打印 微信小程序连接蓝牙 1.初始化蓝牙 1.1 wx.openBluetoothAdapter(Ob ...
- 微信小程序蓝牙连接步骤
微信小程序蓝牙连接步骤 注意,微信小程序的低功耗蓝牙,获取附近蓝牙时,ios和android获取的deviceid 是不一样的.android获取的是mac地址,ios获取的是经过内部转换加密过的. ...
最新文章
- 网元查看一个无厘头的core dump问题定位
- s3c6410_u-boot-2010.03移植
- Shell笔记9——Shell数组的应用实践
- 采用TCPListener/TCPClient实现图片传输
- mysqlfor循环中出错继续_运维大佬教你“打僵尸”——处理Linux系统中大量的僵尸进程(2)...
- mysql5权威指南_MySQL5权威指南(第3版)
- 服务器控件的 ID, ClientID 和 UniqueID 属性
- Soul网关源码阅读番外篇(一) HTTP参数请求错误
- CSS 常用中文字体的英文名称
- 标记偏置 隐马尔科夫 最大熵马尔科夫 HMM MEMM
- faster rcnn论文_论文导读-从Faster-RCNN/Mask RCNN/Cascade-RCNN到HTC
- php foeeach页面输出,PHP数组foreach遍历输出例子详解
- forum.php 下载,PHPWind Forums
- 百度个性化瓦片地图下载
- Python全栈开发教程笔记
- Spring Boot打包成执行jar后获取classpath下文件异常解决
- 在移动设备上使用M3G编程教程(转)
- 【2017今日头条】头条校招(JAVA)
- Android 内容复制到剪贴板
- 如果你是一个Java面试官,你会问哪些问题?
热门文章
- Scrapy网络爬虫框架实际案例讲解,Python爬虫原来如此简单!
- CVPR 2020 Oral |目标检测+分割均实现SOTA!厦大提出协同学习网络
- ARM全新Armv9架构:10年最大更新、增强AI和security能力
- 基于RANSAC的激光点云分割
- Numpy基础知识点汇总
- 深度学习(三十)贪婪深度字典学习
- php到期自动过期,PHP实现页面长时间无操作,自动过期函数
- 用python写helloworld_Python基于Tkinter的HelloWorld入门实例
- python深拷贝_python 深拷贝与浅拷贝的区别
- JVM 内存监控 (1.8)