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

发布时间: 2022-06-18 15:04:57 作者: 大象笔记

最近写了一个蓝牙微信小程序的 bug,修复的过程中,我反思了一下蓝牙通信合理的交互模式。

原实现逻辑

在点击模式选择(即开始)/ 暂停 / 继续 / 停止,这几步操作时:

点击后,先向硬件发送蓝牙指令,然后立即更新本地状态,更新 UI 界面。

在通信正常,没有干扰,没有数据丢失的情况下,确实没有问题。

异常情况

然而在硬件放到控制柜之后,整体装机之后,诡异的现象就出现了。

20% 的概率出现界面卡住, 或者状态不同步。

根本原因在于概率性通信指令丢失。

新的交互逻辑

这种就类似于 tcp / http 式的同步操作,等待有返回才允许进行后续操作。否则就得同时维护一个本地状态,还要兼顾同步硬件的状态。

带来的问题

我是一名山东烟台的开发者,联系作者