
蓝牙连接
关于Micro:bit的一些基础知识已经介绍完毕,接下来正式开始介绍视力检测App项目。首先,我们要解决的第一个问题是Micro:bit与App Inventor的蓝牙连接问题。
我们知道Micro:bit是自带蓝牙编程包的,但是这个软件包与App Inventor不易进行交互,适配工作量大,庆幸的是创客界的大神已开发完成Micro:bit与App Inventor蓝牙连接的软件包,我们只需在Micro:bit端和App Inventor端分别导入这两个软件包即可。
(一)Micro:bit端
步骤1:新建一个项目。
步骤2:导入蓝牙软件包。
单击“设置”按钮,选择“添加包…”,界面如图1-7所示。

图1-7 “添加包…”界面
输入蓝牙软件包下载网址,开始搜索,如图1-8与图1-9所示。

图1-8 输入蓝牙软件包下载网址

图1-9 搜索到蓝牙软件包
网址为:
https://github.com/LaboratoryForPlayfulComputation/pxt-blockytalkyBLE
选中此软件包后,会跳出一个删除软件包的界面,这是因为无线和蓝牙不兼容,只能选其一。删除无线软件包,就能成功导入蓝牙软件包,如图1-10所示,可以看到编程积木块选区已出现蓝牙,如图1-11所示。

图1-10 删除无线软件包并添加蓝牙软件包

图1-11 编程积木块选区
蓝牙软件包中所包含的编程积木块截图如图1-12所示。

图1-12 蓝牙软件包所包含的编程积木块
步骤3:将蓝牙连接模式改为无校验模式。
单击“设置”按钮,选择“项目设定”。蓝牙连接方式选用第一项,免配对连接。不需要配对:任何人都可以通过蓝牙连接,如图1-13所示。

图1-13 设置蓝牙连接模式
步骤4:输入蓝牙连接代码,如图1-14所示。

图1-14 蓝牙连接代码
(二)App Inventor端
步骤1:输入网址http://app.gzjkw.net/login/,登陆App Inventor。
步骤2:蓝牙连接相关的界面设计。
需要两个按钮,一个标签和一个列表显示框。其中一个按钮用于扫描蓝牙,另一个按钮用于蓝牙的连接与断开。标签用于文字显示蓝牙当前状态。列表显示框用于显示扫描到的蓝牙设备。蓝牙部分组件设计如图1-15所示。

图1-15 蓝牙部分组件设计
最重要的一个非可视化组件为与Micro:bit相适配的AI端蓝牙扩展包,将后缀名为.aix的拓展包导入,如图1-16所示。

图1-16 导入蓝牙拓展包

拓展包附件下载
步骤3:蓝牙连接相关的逻辑设计。
当扫描按钮被按下时,触发蓝牙扫描,并且将标签显示为“当前蓝牙状态为:正在扫描……”。因为搜寻到Micro:bit的蓝牙是一个侦听事件,只有当你单击“开始”扫描按钮之后才将搜索到的Micro:bit蓝牙显示出来,所以用一个全局变量bScan来控制。
蓝牙扫描部分代码如图1-17所示。

图1-17 蓝牙扫描部分代码
设置另一个全局布尔变量bConnected来表示连接状态,初始值为假。选择扫描到的Micro:bit蓝牙之后,再单击“连接”按钮,调用蓝牙连接行为。蓝牙连接与蓝牙断开是两个并行的侦听事件。只要蓝牙连接,变量bConnected值更改为真,标签显示为“当前蓝牙状态为:已连接”,并且按钮的图片更改为断开图片。此时如果单击“断开”按钮,调用蓝牙断开行为。侦听到蓝牙为断开时,变量bConnected值更改为假,标签显示为“当前蓝牙状态为:已断开”,并且连接的图片更改为连接图片。
蓝牙连接与断开部分代码如图1-18所示。

图1-18 蓝牙连接与断开部分代码