小程序蓝牙

大象笔记 > 标签 > 小程序蓝牙

微信小程序通过蓝牙控制硬件设备、及数据传输

给客户做了一个手机微信小程序蓝牙控制硬件设备启动,运行模式的功能;同时可以读取设备上的实时运行数据,展示在手机上(当时数值发生变化时由设备主动通过蓝牙推送到手机上)。 最终效果 微信小程序目前并不支持经典蓝牙 参考: https://developers.weixin.qq.com/community/develop/doc/000c20c0574c00b9a33b0c38c51400?_at=1618552916637 同一设备是否可以同时支持经典蓝牙与低功耗蓝牙 蓝牙 4.0 规范允许设备同时支持经典与低功耗蓝牙协议。 小程序蓝牙是否支持同时连接多个设备 https://develope ...

阅读全文...

小程序 wx.writeBLECharacteristicValue 向蓝牙写入数据报错 10004 noservice

使用微信小程序官方提供的操作蓝牙设备示例代码 https://developers.weixin.qq.com/miniprogram/dev/framework/device/bluetooth.html 向低功耗蓝牙设备写入数据时,发现蓝牙设备没有收到数据。 为 wx.writeBLECharacteristicValue 增加了成功失败回调之后 wx.writeBLECharacteristicValue({ deviceId: this._deviceId, serviceId: this._deviceId, characteristicId: this._characteri ...

阅读全文...

微信小程序切换到后台时,取消蓝牙监听

需求背景 蓝牙设备一直在给微信小程序发送数据,例如一秒一次。 但是切到后台之后,再切回来,例如,间隔了5分钟,再切回来会收到大量的蓝牙数据。 看起来是微信帮小程序做了缓存队列,然后疯狂地传给小程序。 造成的影响就是,用户会看到界面在一顿疯狂地刷新,异常鬼畜。 我比较担心的是,如果时间更长,会不会导致用户切回来的时候,会在很长一段时间内无法操作。 解决思路 小程序切到后台时,需要取消监听。等切回来时,再重新监听。 因为在后台这期间收到的数据并没有处理的意义,只需要在再次打开时, 同步一下状态即可。 搜索了半天没有找到相关的文档。迫不得已浏览一遍小程序蓝牙文档,看看是否有相关接口。 没想到在车间里 ...

阅读全文...

微信小程序显示蓝牙信号强弱

需求背景 蓝牙控制板放到控制柜里之后,就会有 20% 的概率出现蓝牙通信丢失的情况。 不确定是信号干扰的问题,还是放到控制柜之后,受隔音棉的影响信号变弱所致。 所以需要能够实时打印当前的蓝牙信号强度,来排除信号减弱的问题。 微信小程序界面上显示信号强度。底部,默认隐藏,点击显示。 参考文档 https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-ble/wx.getBLEDeviceRSSI.html wx.getBLEDeviceRSSI(Object object) 获取蓝牙低功耗设备的信号强度 (Rec ...

阅读全文...

蓝牙应用的阻塞式/同步操作

最近写了一个蓝牙微信小程序的 bug,修复的过程中,我反思了一下蓝牙通信合理的交互模式。 原实现逻辑 在点击模式选择(即开始)/ 暂停 / 继续 / 停止,这几步操作时: 点击后,先向硬件发送蓝牙指令,然后立即更新本地状态,更新 UI 界面。 在通信正常,没有干扰,没有数据丢失的情况下,确实没有问题。 异常情况 然而在硬件放到控制柜之后,整体装机之后,诡异的现象就出现了。 20% 的概率出现界面卡住, 或者状态不同步。 根本原因在于概率性通信指令丢失。 新的交互逻辑 点击后,弹出 loading 状态框,禁止其他操作。提示,通信中... 收到状态变化的蓝牙回复,再允许操作,并去掉 loadi ...

阅读全文...