一分钟解决微信小程序蓝牙(ble)进行读写操作Android和ios的各种奇葩坑

您所在的位置:网站首页 ios和安卓蓝牙传输一样吗手机 一分钟解决微信小程序蓝牙(ble)进行读写操作Android和ios的各种奇葩坑

一分钟解决微信小程序蓝牙(ble)进行读写操作Android和ios的各种奇葩坑

2024-07-12 13:28:47| 来源: 网络整理| 查看: 265

最近应公司要求开发一款小程序,有一个功能是通过低功耗蓝牙进行数据获取。由于本人是Android手机(苹果也有基本不用),所以调试一直用的都是Android端微信调试。产品快发布时,同事就用苹果来测试一下,结果才不忍睹。让我这人称"惊讶经理小王子",顿时颜面扫地。

第一,渲染的蓝牙名字问题

Android端的:Android端 Android端中获取到蓝牙信息:name和localName是一致的。所以我就惯用name。 但是ios端:在这里插入图片描述 ios端的name和localName是不一致的,所以用ios小程序显示的是E04-BT_V1.,当时都懵了。

第二,数据写入问题:

名字错了,发送总该行吧。结果大跌眼睛,一直提示发送错误。因为与小程序连的产品为了统一方便uuid默认0000FFF0-0000-1000-8000-00805F9B34FB,所以我直接把 serviceId: “0000FFF0-0000-1000-8000-00805F9B34FB”, characteristicId: “0000FFF2-0000-1000-8000-00805F9B34FB”,写死了。 然后就一直报错,当时又懵逼了。于是看了度娘,微信开放社区,csdn都没解决。通过自己结合文档摸索,终于找到问题了。 如果手机是ios系统就必须将下两个方法写在wx.writeBLECharacteristicValue({})前面

wx.getBLEDeviceServices({ deviceId:devv,//devv蓝牙的deviceId就是上面图片中的"532B......." success (res) { wx.getBLEDeviceCharacteristics({ deviceId:devv, // 这里的 serviceId 需要在 getBLEDeviceServices 接口中获取 serviceId:res.services[1].uuid,// success (res) { // console.log( res.characteristics) }, fail(res) { console.error('getBLEDeviceCharacteristics===', res) } }) }, fail (e){ console.log('fail services:', res) } })

IOS写入数据时serviceId(服务)和characteristicId(特征)一定要大写 wx.writeBLECharacteristicValue({ deviceId: devv, serviceId: “0000FFF0-0000-1000-8000-00805F9B34FB”, characteristicId: “0000FFF2-0000-1000-8000-00805F9B34FB”,

第三,数据读取问题:

Android系统中wx.writeBLECharacteristicValue({})里直接放wx.notifyBLECharacteristicValueChange({})再放 wx.onBLECharacteristicValueChange(function (res) {})是可以将另一端发送的数据读出来的如下:

wx.writeBLECharacteristicValue({ deviceId: devv, serviceId: "0000FFF0-0000-1000-8000-00805F9B34FB", characteristicId: "0000FFF2-0000-1000-8000-00805F9B34FB", value:that.data.buffer, success: function (res) { wx.notifyBLECharacteristicValueChange({ state: true, deviceId:devv, serviceId:"0000FFF0-0000-1000-8000-00805F9B34FB", characteristicId: "0000FFF1-0000-1000-8000-00805F9B34FB", success: function (res) { wx.onBLECharacteristicValueChange(function (res) { console.log( res) }) } }) } })

IOS系统中就必须加上 wx.readBLECharacteristicValue({})不然数据是不更新的。(代码就不上了,跟上面差不多加上wx.readBLECharacteristicValue({}))就行。

下面说一下IOS中的uuid:

在这里插入图片描述 这是三种通过wx.getBLEDeviceServices({})获取的。 获取其特征值wx.notifyBLECharacteristicValueChange({})具体看问题二中的代码: 在这里插入图片描述 每一个uuid又有什么权限呢,看下图: 上面properties是权限,下面是对应的uuid 在这里插入图片描述

在这里插入图片描述

0000FFF3一般就要用于写操作(wx.writeBLECharacteristicValue({}))的特征值中,因为接收端一般不用0000FFF3特征值。

到这里就结束了,希望帮助你顺利脱坑,以上代码均是我举例说明,请结合自己实际代码进行调试。 希望能够帮到大家哦!IT需要爱与和平😊,最后请大家关注我,以及我的一分钟系列(Android篇和小程序篇)让你一分钟实现相应的功能,成功引起产品经理的注意袄。



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭