其实,嵌入式工程师也可以用小程序辅助开发!

640?wx_fmt=jpeg

微信小程序在移动互联网领域取得了巨大的成功,它依托微信这个广大的平台,以其免安装、跨平台、易于分享传播的优点,广泛地应用在各种场景,是继App后又一个革命性的信息展现方式。
看上去所有这些成功带给嵌入式的改变微乎其微,但事实上微信小程序平台提供了诸如蓝牙、NFC、WiFi等控制手机设备的接口,为小程序和嵌入式外设通信创造了可能性。
微信小程序的开发使用的语言是js,用腾讯自有的IDE开发环境,开发前需要申请注册账号,每次开发都要用绑定的微信扫描二维码才可以进入开发环境。流程虽然有点繁琐,但是腾讯提供了详细的文档,照着做下来还是比较容易的。
本文通过实现一个BLE数据传输profile来梳理一下微信小程序的蓝牙模块。
我先简单介绍一下这个叫做Qpp的BLE profile。这个profile的作用就是实现master和slave的数据传输。
如图所示,该profile的service包含两个characteristic,分别具有write和notify的属性,对应着数据的写入和发出。

640?wx_fmt=png

接下来我们就正式开始微信小程序实现Qpp这个的旅程。
下图是实现这个profile的流程图,简略的表示了各个步骤和用到的方法。

640?wx_fmt=jpeg

打开蓝牙适配器

和很多开发平台类似,开始使用蓝牙功能的时候,都需要对蓝牙模块进行初始化的工作。
我们在使用微信小程序蓝牙模块前,需要调用wx.openBluetoothAdapter方法来完成这项任务,在这个函数成功返回前,是不能调用任何其他的蓝牙函数的,代码如下。
640?wx_fmt=png

说明一下,这个方法有三个用作回调函数的参数,但是开发者只需传入自己感兴趣的回调方法就可以了,我们的示例中只传入了success这个回调,用来处理成功打开蓝牙适配器后的操作。

在微信小程序里几乎所有的方法都是这种回调方式。

扫描设备

在打开蓝牙适配器后,也就是在wx.openBluetoothAdapter的success回调里,要继续进行扫描设备。
微信小程序通过wx.startBluetoothDevicesDiscovery方法来扫描周边的蓝牙设备,这个过程需要注意一点,就是扫描到的蓝牙设备需要有个回调方法来接收,这个回调方法不是传给wx.startBluetoothDevicesDiscovery做参数的,而是需要调用wx.onBluetoothDeviceFound注册一下。
代码如下,图中的代码都是要放到wx.openBluetoothAdapter的success回调里的。

640?wx_fmt=png

顺利的话,在调用完这两个方法后,我们就能够在wx.onBluetoothDeviceFound传入的回调方法里获得device对象了。

连接设备

接着我们需要创建连接: wx.createBLEConnection是用来创建连接的方法,参数是扫描出来的device对象里的deviceId。代码如下。

640?wx_fmt=png

查询设备

当连接成功后,就需要发现设备的服务了,我们要实现Qpp的通信,所以我们只关心Qpp的service。如下, wx.getBLEDeviceServices获得到了device下可用的服务,我们又通过UUID过滤出了QPP的service。
640?wx_fmt=png

查询特征

接下来我们还需要用wx.getBLEDeviceCharacteristics获取我们关心的characteristic,同样需要用uuid来比较识别。
当找到属性为notify的characteristic的时候,我们需要先通过wx.onBLECharacteristicValueChange注册一个接受数据的回调函数,再通过wx.notifyBLECharacteristicValueChange启用notify。

640?wx_fmt=png

到了这一步,我们的微信小程序就能收到外设的数据了。

写数据

如果需要给外设发数据,还需要最后一步,那就是找到属性是write的characteristic然后写入数据,写数据的方法是wx.writeBLECharacteristicValue。
640?wx_fmt=png

写到这里,我们基本上把Qpp这个profile用微信小程序就实现了。小程序常见的蓝牙函数基本也都用到了,再开发其他的蓝牙功能也都是同样的道理了。
总体上,微信小程序的蓝牙开发接口设计的中规中矩,很容易理解和上手开发,除此之外,还有微信一个天然的优势我们可以利用起来,就是微信提供了便利的云函数和云存储功能,我们在BLE开发当中的数据很方便就能传送到云端,这对及时准确的分析定位客户使用时遇到的问题有很大的帮助。
暂时想到的就这些,水平有限,文中错误之处欢迎指正。 

温馨提示:有嵌友实践过,在Android系统下没问题,可能是iOS对硬件操作的权限问题,所以iOS下小程序操作Bluetooth不是特别友好!

640?

5.

640?wx_fmt=gif

免责声明:本文系网络转载,版权归原作者所有。如涉及作品版权问题,请与我们联系,我们将根据您提供的版权证明材料确认版权并支付稿酬或者删除内容

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值