微信小程序使用蓝牙通信协议连接硬件整理总结(初始化蓝牙、搜索设备、展示设备)

news/2024/11/23 0:11:41/

前言

最近我们上线了个小程序的项目,全国独家的~主要就是检测人身体的一些基本生命体征的,比如检测心电图、心率、血氧饱和度、血糖、尿酸等等,因为产品是我们自主研发的,硬件也是我们自己造的,所以软件也是由我们整个研发团队来研发。

目前的检测板只支持蓝牙协议传输数据,需要小程序与检测板通过发送和接受指令来实现各项功能,趁热打铁,今天我就来整理一下我们在使用小程序中,是如何连接蓝牙的。

初始化蓝牙模块

在小程序中,要想使用蓝牙能力必须得先调用一下wx.openBluetoothAdapter初始化蓝牙适配器模块,起生效周期为调用wx.openBluetoothAdapter至调用wx.closeBluetoothAdapter或小程序销毁为止。

微信开放文档: 只有在小程序蓝牙适配器模块生效期间,开发者才能够正常调用蓝牙相关的小程序 API,并收到蓝牙模块相关的事件回调(绑定监听不受此限制)。

小程序对蓝牙支持情况如下: 经典蓝牙:iOS 因系统限制暂无法提供,安卓目前已在规划中。 蓝牙低功耗 (BLE)主机模式:基础库 1.1.0(微信客户端 iOS 6.5.6,Android 6.5.7)开始支持。 从机模式:基础库 2.10.3 开始支持。 蓝牙信标 (Beacon):基础库 1.2.0 开始支持。

蓝牙连接的大致过程

1.初始化蓝牙设备

首先我们来调用一下初始化蓝牙模块的方法wx.openBluetoothAdapter,在手机端为开启蓝牙或者小程序蓝牙授权背拒绝时,就会触发失败的回调,为了加强用户的有好体验,我们可以给其一个有效提醒。 代码如下:

wx.openBluetoothAdapter({success: function (res) {console.log("初始化蓝牙成功")//查找蓝牙设备findBlue();},fail: function (res) {wx.showModal({content: '请开启手机蓝牙!',showCancel: false,success (res) {}})}}) 

注意: 其他蓝牙相关 API 必须在wx.openBluetoothAdapter调用之后使用。否则API会返回错误**(errCode=10000)**。

2.搜索蓝牙设备

当我们初始化蓝牙模块成功后,下一步我们就可以搜索一下蓝牙设备了,我们需要调用这个方法wx.startBluetoothDevicesDiscovery,调用该方法开始搜寻附近的蓝牙设备,此操作比较耗费系统资源,在搜索到需要的设备后,需要及时调用wx.stopBluetoothDevicesDiscovery停止搜索。 相关代码如下:

const findBlue = model => {wx.startBluetoothDevicesDiscovery({services:	["xxxxxxxx", "0000FFB0-xxxxxx"],interval: 0,success: function (res) {ConnectedDeviceRelated.isSearchBluetooth_detectionBoard = trueif (model != 'repeat' && e != 'notSearch') {wx.showToast({title: '正在搜索中...',icon: 'none',duration: 1500})}//解决iOS第一次进入检测页面卡死的问题setTimeout(function (params) {getBluetoothDevices()},500)},fail:function (res) {console.log('搜索蓝牙设备错误',res)if (res.errMsg == 'startBluetoothDevicesDiscovery:fail:location permission is denied') {wx.showModal({title: '警告',content: '微信的位置权限被拒绝,请到设置中手动开启授权!',showCancel: false,success(res) {}})}}})} 

其中services为要搜索的蓝牙设备主服务UUID列表,某些蓝牙设备会广播自己的主serviceUUID。如果设置此参数,则只搜索广播包有对应 UUID 的主服务的蓝牙设备,可以通过该参数过滤掉周边不需要处理的其他蓝牙设备。 我的示例代码里面写的是XXX,你可以根据你的实际情况而来。

注意 蓝牙功能需要用到定位权限,安卓微信 6.0 及以上版本,无定位权限或定位开关未打开时,无法进行设备搜索。这种情况下,安卓微信 8.0.16 前,接口调用成功但无法扫描设备;8.0.16 及以上版本,会返回错误。返回错误后,建议提示用户开启定位权限.

代码就是下面的这段,其实已经在上面放过了:

fail:function (res) {console.log('搜索蓝牙设备错误',res)if (res.errMsg == 'startBluetoothDevicesDiscovery:fail:location permission is denied') {wx.showModal({title: '警告',content: '微信的位置权限被拒绝,请到设置中手动开启授权!',showCancel: false,success(res) {}})}} 

3.获取搜索到的蓝牙设备

上个方法我们是进行了搜索附近蓝牙设备,那么搜索到之后我们怎么办?我们就将其获取出来,以供在业务场景中使用。 获取在蓝牙模块生效期间所有搜索到的蓝牙设备,包括已经和本机处于连接状态的设备。当获取到你指定的设备后,要把蓝牙设备的设备id单独保存,在后面的操作中会用到。 代码如下:

 //获取蓝牙设备信息const getBluetoothDevices = () => {wx.getBluetoothDevices({success: function (res) {if (res.devices.length > 0) {for (var i = 0; i < res.devices.length; i++) {if (res.devices[i].localName == ConnectedDeviceRelated.inputValue) {console.log('看一下获取到的指定设备', res.devices[i])ConnectedDeviceRelated.deviceId = res.devices[i].deviceIdapp.globalData.deviceId = res.devices[i].deviceIdapp.globalData.bluetooth = res.devices[i].localNamecreateBLEConnection()break;}if (res.devices.length - 1 == i) {findBlue('repeat')}}} else {findBlue('repeat')}},fail: function () {console.log("搜索蓝牙设备失败")}})} 

下图就是我们获取到的设备打印信息:

最后

整理了一套《前端大厂面试宝典》,包含了HTML、CSS、JavaScript、HTTP、TCP协议、浏览器、VUE、React、数据结构和算法,一共201道面试题,并对每个问题作出了回答和解析。

有需要的小伙伴,可以点击文末卡片领取这份文档,无偿分享

部分文档展示:



文章篇幅有限,后面的内容就不一一展示了

有需要的小伙伴,可以点下方卡片免费领取


http://www.ppmy.cn/news/461311.html

相关文章

蓝牙Bluetooth模块介绍

1&#xff0c;蓝牙模块——基础知识介绍 https://blog.csdn.net/wwt18811707971/article/details/77833602 2&#xff0c;常见蓝牙模块介绍和AT指令 https://blog.csdn.net/qlexcel/article/details/103815926 3&#xff0c;app怎么传信息给蓝牙模块_如何使用蓝牙模块&…

Android - 蓝牙开发

文章目录 科普SIG类型制式选择逻辑链路控制适配协议 (L2CAP)L2CAP的功能 蓝牙框架和 RFCOMM 协议蓝牙安全白名单机制 编程蓝牙权限Classic BluetoothBluetooth Low Energy术语角色 & 职能查找 BLE 设备连接设备上的 GATT 服务器绑定服务蓝牙设置连接到设备连接到 GATT 服务…

手把手教你智能硬件开发(四) 蓝牙传输

第4节 蓝牙传输 智能硬件基本上都需要和手机相连&#xff0c;然后让手机控制这些硬件的工作。相连的方式不外乎以下三种&#xff0c; 数据线有线连接&#xff0c;通过一根数据线把智能硬件和手机连接起来。采用这种方式&#xff0c;需要一个特殊的带USB HOST功能的扩展板&…

KT6368A国产蓝牙BLE芯片驱动程序硬件注意事项

目录 1.1 简介 KT6368A芯片是一款支持蓝牙双模的纯数据芯片&#xff0c;蓝牙5.1版本。芯片的亮点在超小尺寸&#xff0c;超级价格。以及简单明了的透传和串口AT控制功能。大大降低了嵌入蓝牙在其它产品的开发难度和成本 1.2 硬件说明 1.3 芯片功耗初步说明 1.4 芯片的简单…

Android硬件通信之 蓝牙通信

一&#xff0c;简介 1.1 现在的手机设备基本上都支持蓝牙模块&#xff0c;蓝牙与蓝牙之前可以相互通信&#xff0c;所以只要物联网机器上配有蓝牙模块&#xff0c;就可以用手机蓝牙连接机器蓝牙&#xff0c;从而和机器通信 1.2 蓝牙按协议常见可以分为经典蓝牙和低功耗蓝牙&a…

电赛小车常用硬件解析(蓝牙遥控,循迹)

智能小车硬件解析 &#xff08;蓝牙遥控、循迹&#xff09;智能小车硬件解析 智能小车硬件解析前言一、单片机1.什么是单片机2.STM32F103C8T63.小车项目总览4.器材清单 二、电机1.直流减速电机&#xff08;1&#xff09;驱动方法&#xff08;2&#xff09;电机参数 2.带编码器的…

BlueTooth: 蓝牙介绍

蓝牙简介&#xff1a; “蓝牙”是一种大容量近距离无线数字通信技术标准&#xff0c;其目标是实现最高数据传输速率1Mbps、最大传输距离为10厘米&#xff5e;10米&#xff0c;通过增加发射功率可达到100米。 蓝牙技术是爱立信、IBM等5家公司在1998年联合推出的一项无线网络技术…

蓝牙核心技术了解(蓝牙协议、架构、硬件和软件笔记)

https://developer.apple.com/hardwaredrivers/BluetoothDesignGuidelines.pdf 声明&#xff1a;这篇文章是楼主beautifulzzzz学习网上关于蓝牙的相关知识的笔记&#xff0c;其中比较多的受益于xubin341719的蓝牙系列文章&#xff0c;同时还有其他网上作者的资料。由于有些文章…